<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7050424</id><updated>2012-02-03T12:52:36.812+05:30</updated><category term='Links/News'/><category term='C++'/><category term='Mobile'/><category term='Microsoft'/><category term='Internet'/><category term='UPnP'/><category term='Rants/Senti'/><category term='WHDI'/><category term='DLNA'/><category term='Security/Cryptography'/><category term='&quot;Service Discovery&quot;'/><category term='Smart Phones'/><category term='&quot;Wi Fi&quot;'/><category term='Android'/><category term='Fun'/><category term='Design Patterns'/><category term='Symbian'/><category term='Google'/><category term='Open Source'/><category term='Books'/><title type='text'>All Work No Play</title><subtitle type='html'>My tech Blog. 
Symbian Foundation. Mobile phones. Technology. Programming. Trends. Culture.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>53</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7050424.post-2946244871051385255</id><published>2011-01-05T16:05:00.005+05:30</published><updated>2011-01-05T17:25:36.156+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DLNA'/><category scheme='http://www.blogger.com/atom/ns#' term='&quot;Wi Fi&quot;'/><category scheme='http://www.blogger.com/atom/ns#' term='WHDI'/><category scheme='http://www.blogger.com/atom/ns#' term='&quot;Service Discovery&quot;'/><title type='text'>WHDI - A New Hope?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.blogger.com/post-create.g?blogID=7050424"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:none; cursor:none;width: 209px; height: 58px;" src="http://www.whdi.org/images/logo/WHDI_logo.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span"&gt;It is my first tech blog in more than a year. So I can make it worthwhile.&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the recent CES, &lt;a href="http://www.whdi.org/Technology/"&gt;WHDI&lt;/a&gt; arrived with a bang, much to my surprise. While I was sleeping, looking like the wireless connectivity world was taking huge strides. Curious to know how well will this fare. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's a short summary:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;WHDI is a networking solution that makes it possible to share HD, uncompressed video in the network. &lt;/li&gt;&lt;li&gt;Unlike DLNA, which is more of a software intelligence that helps in discovering (using UPnP) devices, listing content and sending/rendering media across the room, WHDI is more of a hardware solution that uses a separate band for transmitting HD content. It uses a dedicated video modem. See &lt;a href="http://www.whdi.org/Technology/"&gt;here&lt;/a&gt; for more.&lt;/li&gt;&lt;li&gt;WHDI was developed by Amimon and now the consortium has several CE industry leaders including Samsung, LG, Sony and Motorola.&lt;/li&gt;&lt;li&gt;WHDI doesn't restrict the source to render to a single target. One can stream from any device on to any other device. &lt;/li&gt;&lt;li&gt;WHDI is a video-aware transmission technology, which means it can recognize the "elements of visual importance" in the stream &lt;/li&gt;&lt;/ul&gt;To be honest, initially baffled me a little bit till I got hold of an old friend and multimedia cat, Girish Shenoy, to translate this to plain text. After the explanation, WHDI really seemed like a really exciting technology indeed. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/f-l-e-x/2456859035/" title="Unwired by f-l-e-x, on Flickr"&gt;&lt;img style="float:left" src="http://farm3.static.flickr.com/2375/2456859035_775b7df455_m.jpg" width="240" height="160" alt="Unwired" /&gt;&lt;/a&gt;Coming from the DLNA background, it was important for me to figure out what the similarities and differences between these 2 technologies are. &lt;/div&gt;&lt;div&gt;Similarities are superficial really: both DLNA and WHDI aim to make life easier for the user to render content on home devices such the TV and the computer over a wireless channel. A lay user doesn't need to know any more than that. &lt;/div&gt;&lt;div&gt;Under the hood, however, these technologies are a world apart. WHDI doesn't really override DLNA but offers an alternative solution that may to be a much better way of handling wireless media connectivity. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are some differences from the top of my head:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;WHDI stems from the fact that most digital rendering devices by default process only &lt;i&gt;uncompressed &lt;/i&gt;data. Content stored in your DVD or delivered to your set-top box are typically &lt;i&gt;compressed&lt;/i&gt;. Compression is necessary to preserve bandwidth. However, compressed data needs to be uncompressed before rendering and this is quite slow in cases. DLNA transmits compressed content over the regular Wi Fi link and this needs to be uncompressed on the TV end which is why DLNA will always have some rendering latency. WHDI, however, transmits uncompressed content directly to the renderer (pretty much like HDMI). In theory, this will always make it faster than DLNA&lt;/li&gt;&lt;li&gt;Since there is no compression involved, the codec incompatibility problems that one may face with DLNA are no longer an issue. &lt;/li&gt;&lt;li&gt;As mentioned earlier, DLNA is typically a software/firmware solution. WHDI defines a whole communication stack and hardware.&lt;/li&gt;&lt;li&gt;WHDI supports "multi-room" transmission, that is, it can penetrate walls. WirelessHD does have this option (though DLNA can work if the WiFi Link is good). It can also stream to multiple players (most DLNA implementations limit to one player at a time).&lt;/li&gt;&lt;li&gt;WHDI operates in its own unlicensed band (5 MHz). This makes it somewhat similar to &lt;a href="http://en.wikipedia.org/wiki/IEEE_802.11n-2009"&gt;802.11n&lt;/a&gt; WiFi. However, WHDI is tailored specifically for video and is highly optimized for it. While 802.11n promises raw data rates of up to 600 Mbit/s, WHDI promises up to 3 Gbit/s. &lt;/li&gt;&lt;li&gt;DLNA uses UPnP's robust device and service discovery mechanism. It is not clear how does WHDI handle the discovery part.&lt;/li&gt;&lt;li&gt;WHDI devices will be inter-operable with the HDMI devices already in the market. So this means that with a dongle that connects a WHDI transceiver to your TV's HDMI port, you can switch over easily to WHDI. In theory, such a dongle can work with DLNA as well - not sure if anyone has tried it though.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;In short, WHDI may finally revive Home Media. Let's wait and see.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;Photo courtesy: &lt;a href="http://www.flickr.com/photos/f-l-e-x/"&gt;F-l-e-x&lt;/a&gt; from Flickr.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-2946244871051385255?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/2946244871051385255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=2946244871051385255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/2946244871051385255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/2946244871051385255'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2011/01/whdi-new-hope.html' title='WHDI - A New Hope?'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2375/2456859035_775b7df455_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-4582933047468544407</id><published>2009-11-06T12:13:00.006+05:30</published><updated>2009-11-06T14:29:10.964+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='&quot;Wi Fi&quot;'/><category scheme='http://www.blogger.com/atom/ns#' term='UPnP'/><title type='text'>This is how easy it is to share media!</title><content type='html'>Media sharing as a technology is somehow very desirable for the average phone user. Today there is enough content (UGC or not) that people want to share and there are relevant technologies (like UPnP) that enable such sharing. The trouble is that there are very few apps that are simple and intuitive enough for the layman to use. The pre-requisite geekiness level for media sharing apps still remain quite high.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UPnP Adoption&lt;/span&gt;&lt;br /&gt;UPnP, for instance, has been around for more than 10 years but unfortunately has a poor penetration. That is not because it is not mature enough to enable various sharing use-cases, but because there has been a severe lack of apps out there that make this a nice and easy. Several CE devices have UPnP today, but the end user is so smothered with 4-letter technologies printed on the box that it is difficult to filter anything useful from the noise. There is no clear way to figure out if you can easily share your content with your TV or Hi Fi systems, unless you learn it from a UPnP-whiz (either on the web or in person). The products somehow always address the super-users, who would be 1% of the buying population. At best.&lt;br /&gt;To quote Carl Sagan, “We live in a society exquisitely dependent on science and technology, in which hardly anyone knows anything about science and technology.”&lt;br /&gt;Unfortunately, vendors still aim for the super-users, the &lt;span class="hw"&gt;Über&lt;/span&gt;-geeks, the mavens. People like you and me have little value to add here. No wonder technologies like UPnP, ZeroConf and DLNA languish for years before they make it to main stream. We need more applications!&lt;br /&gt;Over the years, there were lot of technical problems that plagued media content sharing: Wi-Fi networks were hard to configure, expensive to set up and very difficult to maintain; plus the shared content was limited and nearly everything was heavily copyrighted; finally the UPnP enabled CE devices around costed a bomb!&lt;br /&gt;Over the last 6-7 years, many of these issues are resolved. Most Wi Fi routers practically work in a plug-n-play fashion (which shouldn't be a surprise with UPnP working inside them!). CE devices have become cheaper and UPnP is present right on the PCs. What's more, you have Wi Fi right on your phone. Plus there is HUGE amount of sharable content out there, a big chunk of it generated by the users themselves. There is enough to share and easy means to do it! But media sharing still has a long way to go just because there are not enough apps out there that would entice a lay user to share stuff.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Do I see some hope there?&lt;/span&gt;&lt;br /&gt;Breaking from my whine mode, things are improving slowly out there.&lt;br /&gt;Visit the &lt;a href="http://orb.com/en"&gt;Orb website&lt;/a&gt;.&lt;br /&gt;It is an old idea, but I like the way they have developed this into a powerful, easy-to-use solution that even non-geeks can use. It is basically setting up a server on your personal computer, converting it into a Media Hub. The good part is that it can be accessed over Wi Fi on your phone, over the net. One can even share over email or blogs! Orb guys do not quite give away how did they make it work, but I couldn't rule UPnP out as one of the enablers. Well, as an end user I wouldn't care less how does it work really. Would you? And yes, it is free!&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;BTW, I couldn't helping noticing this scrolling on the main page: "Your iPhone", "Your Wii", "Your DAD's Nokia". Huh? Is Nokia oh-so-80s already? Or Orb wants to target the young guns for now?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.simplifymedia.com/index.html"&gt;Simplify Media&lt;/a&gt; is also similar, though seems to cater to a few devices.&lt;br /&gt;&lt;br /&gt;So there might still be some hope...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-4582933047468544407?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/4582933047468544407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=4582933047468544407' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/4582933047468544407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/4582933047468544407'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2009/11/this-is-how-easy-it-is-to-share-media.html' title='This is how easy it is to share media!'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-7287277320037616547</id><published>2009-11-05T09:10:00.002+05:30</published><updated>2009-11-05T09:15:30.193+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='&quot;Wi Fi&quot;'/><category scheme='http://www.blogger.com/atom/ns#' term='UPnP'/><title type='text'>Streaming from Linux to XBOX - nice tutorial</title><content type='html'>Courtesy: @arthursucks&lt;br /&gt;A reminder that technologies like UPnP can talk over OS/machine boundaries where most remote protocols falter. Unfortunately UPnP is still looked upon as only for super-geeks technology and this is where the difference needs to be made!&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/zg6qTL-gvJw&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/zg6qTL-gvJw&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-7287277320037616547?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/7287277320037616547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=7287277320037616547' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/7287277320037616547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/7287277320037616547'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2009/11/streaming-from-linux-to-xbox-nice.html' title='Streaming from Linux to XBOX - nice tutorial'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-7159001260494334904</id><published>2009-11-02T15:03:00.005+05:30</published><updated>2009-11-02T21:14:21.934+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='&quot;Wi Fi&quot;'/><category scheme='http://www.blogger.com/atom/ns#' term='&quot;Service Discovery&quot;'/><title type='text'>Wi Fi Direct</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://morguefile.com/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_xv6u2-T9zlE/Su73HTMK0CI/AAAAAAAADn0/5-1OS4_Pbkk/s320/WirelessRouter.JPG" alt="" id="BLOGGER_PHOTO_ID_5399524708046262306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Last month saw a lot of buzz around &lt;a href="http://www.wi-fi.org/news_articles.php?f=media_news&amp;amp;news_id=909"&gt;Wi-Fi Direct&lt;/a&gt;, which is basically like an ad hoc wi-fi network on steroids. Now ad-hoc wi-fi capabilities been around for ages, but there are not commonly used and interoperability was often questionable. A side-effect of this was Wi-Fi was chiefly used in Infrastructure mode and, that too, typically in an Internet Gateway Device type setup. For wireless devices, there are further limitations. Mobile phones have been carrying Wi-Fi for ages now, but the primary use-case has been to set up an Internet access point with the home wi-fi router and browse. Most of the mobile Wi-Fi applications are built around this premise.&lt;br /&gt;Of course, there is Home Connectivity and DLNA, powered by UPnP, which exploit the local sharing spectrum of Wi-Fi. But unfortunately, there are a very few phones with DLNA/UPnP.Surely, I can do more with the mobile over Wi-Fi!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://morguefile.com/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: right; cursor: pointer; width: 222px; height: 317px;" src="http://mrg.bz/cl3cH5" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Fact is that due to these limitations, Wi-Fi is not a popular choice for gaming, sharing information, creating information epidemics. Bluetooth has filled in this gap. With the coming of Wi-Fi Direct, some speculate if BT will pushed over.&lt;br /&gt;Well, that remains to be seen but it is interesting to see that BT itself is trying address the low-power requirements on one hand (&lt;a href="http://www.bluetooth.com/Bluetooth/Products/More_about_emBluetoothem_low_energy_technology.htm"&gt;BT LE&lt;/a&gt;), while trying to score high on the speed &amp;amp; bandwidth requirements (through &lt;a href="http://bluetooth.com/Bluetooth/Technology/Works/Core_Specification_v30.htm"&gt;BT 3.0&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;It is too early to comment on that (nor am I the best person to talk about either technology), but what needs to be seen is whether it makes life easier for the end-user. Today, there is a serious lack of IP-based applications that can work consistently over mobiles and other computing devices. Today, most mobile IP-based applications stand alone.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Service Discovery&lt;/span&gt;&lt;br /&gt;OK, so what's in it for me or my Service Discovery package? Well, my point of interest comes from the fact that there are several Service Discovery applications that can built on top of Wi Fi Direct. Ubiquitous Wi Fi could possibly unlock a large number of services that our mobiles support.&lt;br /&gt;Want to know what news are the other commuters on your train reading right now? Bored in the transit lounge, want to challenge the rest of the people there to a racing game? So on...&lt;br /&gt;Well, it's easier said than done. There are security issues, power issues to deal with. The key point here is there will be a surge in the "services" that our mobile phones can provide or more stuff that we would want to share with others (partly because it is easy to do so). In other words, Service Discovery will have a greater role to play in this world.&lt;br /&gt;&lt;br /&gt;Further Links:&lt;br /&gt;&lt;a href="http://www.wi-fi.org/news_articles.php?f=media_news&amp;amp;news_id=909"&gt;Wi-Fi Alliance Press Release&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wifinetnews.com/archives/2009/10/wifi_direct_peering.html"&gt;http://wifinetnews.com/archives/2009/10/wifi_direct_peering.html &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Images are from &lt;a href="http://morguefile.com/"&gt;MorgueFile&lt;/a&gt; =&gt; A great place for finding creative and free images. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-7159001260494334904?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/7159001260494334904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=7159001260494334904' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/7159001260494334904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/7159001260494334904'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2009/11/wi-fi-direct.html' title='Wi Fi Direct'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xv6u2-T9zlE/Su73HTMK0CI/AAAAAAAADn0/5-1OS4_Pbkk/s72-c/WirelessRouter.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-532807288606960122</id><published>2009-10-28T19:41:00.004+05:30</published><updated>2009-10-28T22:10:32.144+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><title type='text'>Eric Schmidt at Gartner meet</title><content type='html'>Information prophet or Google's spin-doctor, parts of this 45 min odd presentation are quite interesting. Ignore the Gartner guys - they are too busy trying to look sophisticated.&lt;br /&gt;&lt;object width="445" height="364"&gt;&lt;param name="movie" value="http://www.youtube.com/v/lHxub_yQfig&amp;amp;hl=en&amp;amp;fs=1&amp;amp;border=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/lHxub_yQfig&amp;amp;hl=en&amp;amp;fs=1&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="445" height="364"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Refer to the TubeChop &lt;a href="http://www.readwriteweb.com/archives/google_web_in_five_years.php"&gt;here&lt;/a&gt; for topics related to future of web.&lt;br /&gt;The key take-aways were that Google sees itself pretty much in the center of the next internet revolution. There focus is primarily towards getting more and more customers for &lt;a href="%3Cobject%20width=%22445%22%20height=%22364%22%3E%3Cparam%20name=%22movie%22%20value=%22http://www.youtube.com/v/s_a-gn0dYmk&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;border=1%22%3E%3C/param%3E%3Cparam%20name=%22allowFullScreen%22%20value=%22true%22%3E%3C/param%3E%3Cparam%20name=%22allowscriptaccess%22%20value=%22always%22%3E%3C/param%3E%3Cembed%20src=%22http://www.youtube.com/v/s_a-gn0dYmk&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;border=1%22%20type=%22application/x-shockwave-flash%22%20allowscriptaccess=%22always%22%20allowfullscreen=%22true%22%20width=%22445%22%20height=%22364%22%3E%3C/embed%3E%3C/object%3E"&gt;enterprise solutions&lt;/a&gt;.&lt;br /&gt;On mobile phones, in particular, Schmidt answers "it depends on the growth rate of hi-quality mobile phones". Surprisingly, he doesn't touch upon Android.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-532807288606960122?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/532807288606960122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=532807288606960122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/532807288606960122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/532807288606960122'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2009/10/eric-schmidt-at-gartner-meet.html' title='Eric Schmidt at Gartner meet'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-6526528777158217358</id><published>2008-11-24T19:48:00.002+05:30</published><updated>2008-11-24T19:51:20.417+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Smart Phones'/><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Smartphone OS comparision</title><content type='html'>Very American in flavour. I do not complete agree from an engineer's perspective as I think there are several important bits that are left out. So this is far from an endorsement.&lt;br /&gt;However, I think this is the sort of comparision that the layman (read the person who buys smartphones and sustains the market) makes.&lt;br /&gt;http://www.cio.com/article/465071/Smartphone_OS_Showdown_iPhone_Android_BlackBerry_Windows_Mobile_Symbian?page=1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-6526528777158217358?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/6526528777158217358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=6526528777158217358' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/6526528777158217358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/6526528777158217358'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2008/11/smartphone-os-comparision.html' title='Smartphone OS comparision'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-7254487468948788477</id><published>2008-10-31T18:30:00.003+05:30</published><updated>2008-10-31T18:55:35.950+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Smart Phones'/><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Hmm, so what is Motorola upto now?</title><content type='html'>I everyone was watching Sanjay Jha's first move to bring Moto devices division back on track. After having finally lost to Sony Ericsson in the last quarter and falling to 4th place, Moto seems to have a new plan. &lt;div&gt;The idea is to ditch Symbian UIQ platform altogether and reduce their (strangely large) portfolio of 6-7 OS solutions. The idea now is to jump on the Android bandwagon (for mid-to-high tier phones) and enjoy the ride while still keeping the Windows Mobile option for high-end and enterprise phones. Some plan, eh?&lt;/div&gt;&lt;div&gt;What shocks me is that this is Moto's &lt;span class="Apple-style-span" style="font-style: italic;"&gt;n&lt;/span&gt;th volte-face in the last 2-3 years. An author has currently described Moto as polyamorous. One would also be tempted to add the adjectives confused and fickle-minded. They missed the "Razr is beaten to death" wake-up call, they missed the smartphone boat, in desperation they clinged on to UIQ (bought half of it, even). With weeks of UIQ event, Motorola was happily on Android OHA boat and swore that this is the way of the future. Within a few months of that, they would be spotted on the Symbian Foundation board as well. And now suddenly they decide to do away with UIQ altogether.&lt;br /&gt;I do not have the mind of a market analyst to understand what is going on, but it is clear as mud to me. And by now, I should have become too inert to get excited about Moto's strategy changes. But they tend to surprise me anyway.&lt;br /&gt;What was interesting to see was that Jha accepted that Moto currently lacked many skills to come back in the market as a leader and there is homework to be done. 3000 people in Moto will taste the axe and Jha has promised to turn things around by 2010 (there is FAT bonus there ~$100m). He, however, mentioned that Moto business will get worse before it gets better. For some reason this statement has always excited analysts and even now they are applauding.&lt;br /&gt;Well, good luck to Moto. And let's wait and watch.&lt;br /&gt;&lt;br /&gt;Further reading:-&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.informationweek.com/blog/main/archives/2008/10/motorola_causin.html" target="_blank"&gt;http://www.informationweek.&lt;wbr&gt;com/blog/main/archives/2008/&lt;wbr&gt;10/motorola_causin.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.reuters.com/article/technologyNews/idUSTRE49T8OJ20081030" target="_blank"&gt;http://www.reuters.com/&lt;wbr&gt;article/technologyNews/&lt;wbr&gt;idUSTRE49T8OJ20081030&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9118586" target="_blank"&gt;http://www.computerworld.com/&lt;wbr&gt;action/article.do?command=&lt;wbr&gt;viewArticleBasic&amp;amp;articleId=&lt;wbr&gt;9118586&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.theregister.co.uk/2008/10/29/motorola_layoffs/" target="_blank"&gt;http://www.theregister.co.uk/&lt;wbr&gt;2008/10/29/motorola_layoffs/&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(136, 136, 136);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-7254487468948788477?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/7254487468948788477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=7254487468948788477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/7254487468948788477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/7254487468948788477'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2008/10/hmm-so-is-motorola-upto-now.html' title='Hmm, so what is Motorola upto now?'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-3728664082321719475</id><published>2008-07-07T09:16:00.002+05:30</published><updated>2008-07-07T09:24:56.845+05:30</updated><title type='text'>Critical assessment of the Symbian Foundation</title><content type='html'>Now that people have digested the news of Nokia taking over Symbian, they are assessing this move more rationally. The initial response was largely positive, but now there are a couple of critical views that are interesting to read:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.telco2.net/blog/2008/07/symbian_its_role_in_the_mobile.html"&gt;Symbian's role in the Mobile Jigsaw&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.telco2.net/blog/2008/07/how_open_is_open_or_whats_up_w.html#more"&gt;Symbian Goes Open - Or Does It?&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-3728664082321719475?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/3728664082321719475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=3728664082321719475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/3728664082321719475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/3728664082321719475'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2008/07/critical-assessment-of-symbian.html' title='Critical assessment of the Symbian Foundation'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-5563040316527794004</id><published>2008-06-26T18:25:00.002+05:30</published><updated>2008-06-26T18:35:01.359+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>The Symbian Foundation</title><content type='html'>Join me in welcoming the biggest thing to hit the mobile technology arena in the recent times - the &lt;a href="http://symbianfoundation.org/"&gt;Symbian Foundation&lt;/a&gt;. What is it all about? Check out the many links below:-&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://money.cnn.com/news/newsfeeds/articles/djf500/200806240718DOWJONESDJONLINE000259_FORTUNE5.htm"&gt;CNN&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reuters.com/article/CMPTRS/idUSL246322920080624"&gt;Reuters&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bbc.co.uk/blogs/technology/2008/06/symbian_the_battle_for_your_mo.html"&gt;BBC&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.businessweek.com/globalbiz/content/jun2008/gb20080624_427361.htm?chan=search"&gt;Business Week&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.theregister.co.uk/2008/06/24/andrew_on_symbian/"&gt;The Register&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mobiletoday.co.uk/news.aspx?id=37796&amp;amp;ekfxmen_noscript=1&amp;amp;ekfxmensel=e0fa05763_38_200"&gt;Mobile Today&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-5563040316527794004?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/5563040316527794004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=5563040316527794004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/5563040316527794004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/5563040316527794004'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2008/06/symbian-foundation.html' title='The Symbian Foundation'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-2855289884811594272</id><published>2008-03-01T15:20:00.001+05:30</published><updated>2008-03-01T15:22:52.914+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Andy Rubin demoes Android on a prototype</title><content type='html'>Interesting stuff. Read more &lt;a href="http://www.bbc.co.uk/blogs/technology/2008/02/under_the_bonnet_of_android_1.html"&gt;here&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;object type="application/x-shockwave-flash" data="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&amp;amp;feedurl=http%3A%2F%2Fbbcnewstechnology%2Eblip%2Etv%2Frss&amp;amp;file=http%3A%2F%2Fblip%2Etv%2Frss%2Fflash%2F704168&amp;amp;showplayerpath=http%3A%2F%2Fblip%2Etv%2Fscripts%2Fflash%2Fshowplayer%2Eswf" allowfullscreen="true" id="showplayer" height="255" width="400"&gt;&lt;param name="movie" value="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&amp;amp;feedurl=http%3A%2F%2Fbbcnewstechnology%2Eblip%2Etv%2Frss&amp;amp;file=http%3A%2F%2Fblip%2Etv%2Frss%2Fflash%2F704168&amp;amp;showplayerpath=http%3A%2F%2Fblip%2Etv%2Fscripts%2Fflash%2Fshowplayer%2Eswf"&gt;&lt;param name="quality" value="best"&gt;&lt;embed src="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&amp;amp;feedurl=http%3A%2F%2Fbbcnewstechnology%2Eblip%2Etv%2Frss&amp;amp;file=http%3A%2F%2Fblip%2Etv%2Frss%2Fflash%2F704168&amp;amp;showplayerpath=http%3A%2F%2Fblip%2Etv%2Fscripts%2Fflash%2Fshowplayer%2Eswf" quality="best" name="showplayer" type="application/x-shockwave-flash" height="255" width="400"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-2855289884811594272?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.bbc.co.uk/blogs/technology/2008/02/under_the_bonnet_of_android_1.html' title='Andy Rubin demoes Android on a prototype'/><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/2855289884811594272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=2855289884811594272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/2855289884811594272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/2855289884811594272'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2008/03/andy-rubin-demoes-android-on-prototype.html' title='Andy Rubin demoes Android on a prototype'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-831034820955271045</id><published>2008-01-21T16:28:00.000+05:30</published><updated>2008-01-21T16:56:56.397+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Smart Phones'/><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>First Google Phone based on Android...</title><content type='html'>&lt;a href="http://www.a-la-mobile.com/"&gt;A la Mobile&lt;/a&gt;, a California-based Linux specialist has successfully ported Android on the HTC QTek 9090 platform.&lt;br /&gt;Read more here:-&lt;br /&gt;&lt;a href="http://www.a-la-mobile.com/news/press/pr080114.html"&gt;A la Mobile website&lt;/a&gt; (straight from the horse's mouth)&lt;br /&gt;&lt;a href="http://www.informationweek.com/news/showArticle.jhtml?articleID=205604588"&gt;Information Week&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.theregister.co.uk/2008/01/15/android_demo/"&gt;The Register&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.usatoday.com/money/industries/technology/2008-01-13-android-google_N.htm"&gt;USA Today&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Meanwhile there have been reports that hackers have already ported Android to a Sharp Zaurus PDA hardware. &lt;a href="http://www.theregister.co.uk/2008/01/11/google_android/"&gt;The Register&lt;/a&gt; reports.&lt;br /&gt;&lt;br /&gt;What does mean? Well, for starters, this would probably force the skeptics to keep quiet for a while. HTC had announced the release of an Android phone somewhere in the second half of 2008 and these incidents would certainly provide concrete proof that this can be done in time. This would definitely draw more and more developers to Android (i.e., apart from those that stayed away in spite of the $10 m developer prize).&lt;br /&gt;&lt;br /&gt;Although it is a good proof-of-concept demo for Android, I think Android still has some time to achieve the maturity needed to survive in the complex mobile OS arena. Only a small battle is won here. Selling the phones to the end user is a bigger part of the problem and we will just have to wait and see how HTC does that with its G-phone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-831034820955271045?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/831034820955271045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=831034820955271045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/831034820955271045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/831034820955271045'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2008/01/first-google-phone-based-on-android.html' title='First Google Phone based on Android...'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-4714372746239193620</id><published>2007-12-11T17:10:00.000+05:30</published><updated>2007-12-11T17:15:29.408+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><title type='text'>Motorola may be bought over?</title><content type='html'>&lt;blockquote&gt;&lt;p align="left"&gt;CNBC speculates that it would be "logical" for RIM, HP or Dell to buy Motorola. Possible? Perhaps. Likely? Hmmm....&lt;/p&gt;&lt;p&gt;&lt;a href="http://iphone.sys-con.com/read/472901.htm"&gt;Motorola to Be Taken Over by RIM, HP or Dell: CNBC&lt;/a&gt;&lt;br /&gt;— CNBC reported on Monday at 'Closing Bell' that Motorola maybe a logical take over target by Dell, HP, or Rim, at $21-22 per share target price. Motorola CEO Ed Zander's chair wasn't even cold yet when the company's CTO Padmasree Warrior, with the company for 23 years, suddenly decided to 'pursue other opportunities' and was out the door. Twenty-four hours later she turned up at Cisco as CTO, reporting to CEO John Chambers, who called her a 'visionary.' Obviously the move has been in the works for a while. The Wall Street Journal says she's into 'seamless mobility,' where multiple devices share the same video, voice and data. It jibes with Cisco's vision.&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-4714372746239193620?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/4714372746239193620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=4714372746239193620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/4714372746239193620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/4714372746239193620'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2007/12/motorola-may-be-bought-over.html' title='Motorola may be bought over?'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-5946198217710276908</id><published>2007-12-07T15:55:00.000+05:30</published><updated>2007-12-11T18:20:20.476+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Smart Phones'/><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Android: The discussion continues - The Developers</title><content type='html'>So now that it's been a month that Google announced Android and weeks full of eager developers dropping by my desk and asking: "So, did you hear about Android?". Let's see how does it all look like.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Developer reaction&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;The Good&lt;/em&gt;&lt;br /&gt;Google initiative to introduce true openness in the mobile development world was welcomed by developers worldwide. And this comes at a time where one was thinking that the rules of playing the mobile platform game are almost been laid out. The status-quo has been threatened, even if Android doesn't deliver.&lt;br /&gt;I think developers are excited about Android partly because they are tired of Symbian and Windows Mobile. Where Symbian has an off-track approach with a very complex signing system, long learning curve and other peculiarities, working on Windows Mobile has always been a frustrating experience as many things still look flaky and immature.&lt;br /&gt;With Android, the developer sees some hope. The initial Java SDK is something people are comfortable with. Everyone seems to be downloading the SDK. In addition to that, Google has announced &lt;a href="http://code.google.com/android/adc.html"&gt;a grand $10 m prize&lt;/a&gt; for best applications. That would keep developers busy.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;The Bad&lt;/em&gt;&lt;br /&gt;Well, it seems that while the developer army was coding away for the $10 m prize, they realised that things are not all that rosy. Why? Because Android code may not be as portable as they thought. Java on mobile has always been an "almost there" business as far as porting goes. I was half expecting that with Android, they would have some smart way to address the minor portability problems of J2ME. And it did - by not including J2ME at all!&lt;br /&gt;With Android, Google introduces Dalvik - their own hand-rolled VM. The fun part is that Google never really advertised Android to be a Java Platform, Sun Microsystems is missing from the OHA party list. What they have done is tweaked the Java implementation to come up with a new Java variant. It is a customised version of the J2SE platform, tailored for mobile phones. &lt;a href="http://www.oreillynet.com/onjava/blog/2007/11/dalvik_googles_tweaked_nonstan.html"&gt;Some think&lt;/a&gt; this would land Google in trouble with Sun. &lt;a href="http://blogs.zdnet.com/open-source/?p=1672"&gt;Others&lt;/a&gt; are more vitriolic in their response and claim that with this proprietary Java implementation is a blow to the so called open platform.&lt;br /&gt;&lt;br /&gt;So why am I going on and on about developers? Who cares about them anyway? How important are they? Well, VERY. The smartphone showbiz is not just about the biggies, the developers have a surprisingly big say in how does this market move. Primarily because it the developer community that builds the eco-systems around the so-called "open" phones. Without them, an "open" would hardly be better any than the ancient plain ol' call-and-text phones. With the dropping Mobile phone rates and extremely high competition among the manufacturers, it is ultimately the applications and services that bring in the dough. Take developers out of the Smartphone equation and the whole industry would crash down. Try to form an eco-system which the developers cannot adapt and it dies a quick death.&lt;br /&gt;So it is very important that Android creates its own loyal band of developers. It seems that they are on their way already, but they might have to a balancing act between openness, innovation and keeping all the OHA members happy and involved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-5946198217710276908?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/5946198217710276908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=5946198217710276908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/5946198217710276908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/5946198217710276908'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2007/12/android-discussion-continues-developers.html' title='Android: The discussion continues - The Developers'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-2293313949737069523</id><published>2007-12-07T11:51:00.000+05:30</published><updated>2007-12-07T14:25:02.145+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Smart Phones'/><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>What's this Android thingie?</title><content type='html'>Well, I know it is too late to write, the entire world knows about it anyway. However, I will still go ahead and write about stuff you already know. Big deal. :)&lt;br /&gt;For all the non-techies who have stumbled across this post, my apologies. This has nothing to do with the "Blade Runner"ish humanoid robots. This is about the new mobile computing platform Google has rolled out this year. Now, back to Google's Android...&lt;br /&gt;A long time ago (2005, to be precise), Google &lt;a href="http://www.businessweek.com/technology/content/aug2005/tc20050817_0949_tc024.htm"&gt;bought&lt;/a&gt; a small startup called Android Inc. This company was found a group of highly qualified techies including co-founder Andy Rubin. Little was known about Android Inc. except that they were working on the mobile domain. At that point in time, the rumours of GPhone were making rounds - no one was sure what it would be like but they expected it to revolutionise the mobile phone industry. Also making rounds were the rumours of Google's own operating system.&lt;br /&gt;After making deep inroads in the internet advertising map, it was but logical that Google steps into the mobile phone arena. It was bound to happen. The question was how?&lt;br /&gt;2 years went by and little was heard about Google's mobile plans, though there were frequent incidents where one could see that Google is trying to create some innovative work there, viz. group notifications through mobile social networking sites (Google bought &lt;a href="http://www.dodgeball.com/"&gt;Dodgeball&lt;/a&gt;) and proximity notifications and advertising. So far, so good, but where is Rubin?&lt;br /&gt;Cut to 5th Nov 2007, Rubin (nowo Director of Mobile Platforms) adds a new blog post on Google Blog - &lt;a href="http://googleblog.blogspot.com/2007/11/wheres-my-gphone.html"&gt;Where's my Gphone&lt;/a&gt;? Well, basically he says "THE" GPhone isn't coming. What they have instead is a complete mobile phone development platform called &lt;a href="http://www.openhandsetalliance.com/android_overview.html"&gt;Android&lt;/a&gt;. And what's that exactly? It is a complete mobile platform package, with an OS, with an API, with UI libraries - you name it. In other words, it is direct competition for Symbian and Windows Mobile platform, except the fact that, er, there it is royalty-free. So in the near future there will be a multitude of Gphones!&lt;br /&gt;Another interesting fact was the birth of the &lt;a href="http://www.openhandsetalliance.com/index.html"&gt;Open Handset Alliance&lt;/a&gt; (OHA) - the group of diverse mobile telephony vendors who have come together to join hands with the Android movement. And if you look at the &lt;a href="http://www.openhandsetalliance.com/oha_members.html"&gt;list of members&lt;/a&gt;, you will spot that the who's who of the mobile and wireless industry there. What surprised people most was the presence of &lt;a href="http://www.htc.com/"&gt;HTC&lt;/a&gt; and &lt;a href="http://www.motorola.com/"&gt;Motorola&lt;/a&gt; in that list. HTC have been one of the biggest Microsoft supporters with their successful range of PDA-like mobile devices running on Windows Mobile OS. Motorola had just come back to Symbian after a long hiatus and has spent a significant amount acquiring a 50% share in UIQ, an UI layer built upon Symbian and co-owned by Sony Ericsson, just a month before the OHA announcement.&lt;br /&gt;Now I can imagine that should has come as a shock to Symbian and Windows when this was first introduced. This was basically saying that the per-phone license fee being paid (and this can go up to $14 per phone) to the current set of vendors is a bloody waste. It seemed like a direct attack on the revenue models of the other mobile OS vendors.&lt;br /&gt;So is this curtains for the other vendors? I think not just yet.&lt;br /&gt;The industry reaction to Android covered the whole possible spectrum. Though it was uniformly lauded for its "truly open" approach, there was criticism in terms of on-phone data security and questions on where this would just remain on paper. The developer community, on the whole, seems to be thrilled with the Adroid SDK (which they released within a week of the initial announcement, brave move). So the industry opinions stand divided. There is no clear picture where would Android be after 18 months (which is roughly the time it takes to conceptualise, design, manufacture and develop a mobile phone).&lt;br /&gt;Reaction of Android's competition has been uniform: Both &lt;a href="http://news.bbc.co.uk/1/hi/technology/7082414.stm"&gt;Symbian&lt;/a&gt; and &lt;a href="http://www.engadget.com/2007/11/08/ce-oh-no-he-didnt-part-l-ballmer-says-android-just-some-word/"&gt;Microsoft&lt;/a&gt; chiefs have dismissed the Android initiative considering it to be a naive attempt to conquer the very complex mobile platform arena. The good ol' ostrich maneuver? Nope, I think not. I think the competition has taken note of Android and is seriously analysing the odds.&lt;br /&gt;However, knowing the mobile development market, I am pressed to agree with Symbian and Microsoft. It is a very, very tricky market. Even after a decade of constant evolution, it doesn't show any signs of standardising. Microsoft should attest this as they have been trying to make a niche for themselves but have only marginally successful so far. Motorola, once the champion in both sales and innovation, is currently battling just to stay afloat. At the same time, Apple with its jazzy but less-than-ideal iPhone (no 3G, no open SDK) has managed to grab the attention of millions. So, it is not an easy task to break into the mobile platform arena and rule the roost.&lt;br /&gt;But Google would (must) have learnt from the mistakes of the others. I am sure they would have analysed the case-studies of the various also-rans. But at this point it all remains a mystery.&lt;br /&gt;Keep an eye open.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-2293313949737069523?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/2293313949737069523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=2293313949737069523' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/2293313949737069523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/2293313949737069523'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2007/12/whats-this-android-thingie.html' title='What&apos;s this Android thingie?'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-371322269041560618</id><published>2007-08-30T11:08:00.000+05:30</published><updated>2007-08-30T11:22:29.604+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><title type='text'></title><content type='html'>Yesterday's newspaper supplement for job openings had this advert by a leading chip manufacturing company. They are in need of Design Engineers, Validation Engineers and, er, Memory Managers!!!&lt;br /&gt;I am still wondering what would a Memory Manager (the human) would do. Hmmm.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_xv6u2-T9zlE/RtZaUVfz5MI/AAAAAAAABKI/9CS2rrRCYLg/s1600-h/DSC00208.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5104366533085488322" style="CURSOR: hand" alt="" src="http://bp0.blogger.com/_xv6u2-T9zlE/RtZaUVfz5MI/AAAAAAAABKI/9CS2rrRCYLg/s320/DSC00208.JPG" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-371322269041560618?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/371322269041560618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=371322269041560618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/371322269041560618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/371322269041560618'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2007/08/yesterdays-newspaper-supplement-for-job.html' title=''/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_xv6u2-T9zlE/RtZaUVfz5MI/AAAAAAAABKI/9CS2rrRCYLg/s72-c/DSC00208.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-2343670532218325151</id><published>2007-08-08T19:03:00.000+05:30</published><updated>2007-08-11T20:51:05.258+05:30</updated><title type='text'>An introduction to Haskell</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Haskell_(programming_language)"&gt;Haskell&lt;/a&gt; is a "lazy, purely functional" programming language that seems to make things a lot easier for programmers.&lt;br /&gt;Here's the video of a presentation by the inventor, &lt;a href="http://en.wikipedia.org/wiki/Simon_Peyton-Jones"&gt;Simon Peyton Jones&lt;/a&gt;. It is the first in a series. Peyton Jones introduces the language and shows how was it used to write a full-fledged Window Manager all in 500-odd lines of code!&lt;br /&gt;Interesting and the presenter's enthusiasm makes it worthwhile. Make sure you have time in your hands, though. :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object id="showplayer" type="application/x-shockwave-flash" height="412" width="680" data="http://blip.tv/scripts/flash/showplayer.swf?autostart=False" allowfullscreen="true" file="http%3A%2F%2Fblip%2Etv%2Frss%2Fflash%2F329701&amp;showplayerpath=" enablejs="true&amp;amp;feedurl="&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-2343670532218325151?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/2343670532218325151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=2343670532218325151' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/2343670532218325151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/2343670532218325151'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2007/08/introduction-to-haskell.html' title='An introduction to Haskell'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-7628603930772118799</id><published>2007-07-31T14:56:00.000+05:30</published><updated>2007-07-31T18:42:19.848+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><title type='text'>The Symbian OS Architecture Sourcebook</title><content type='html'>&lt;a href="http://bp2.blogger.com/_xv6u2-T9zlE/Rq8H_A4VycI/AAAAAAAABGE/R-cFdLZZnXE/s1600-h/DSC00177.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5093298482728782274" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="The Symbian OS Architecture Sourcebook at my desk" src="http://bp2.blogger.com/_xv6u2-T9zlE/Rq8H_A4VycI/AAAAAAAABGE/R-cFdLZZnXE/s320/DSC00177.JPG" border="0" /&gt;&lt;/a&gt; The latest offering from Symbian Press (Wiley) by &lt;a href="http://www.benmorris.eu/"&gt;Ben Morris&lt;/a&gt;. This one is about the Symbian OS Architecture.&lt;br /&gt;&lt;br /&gt;In the past, I have heard people complaining about Symbian Press books having misleading titles (viz., &lt;a href="http://www.wiley-vch.de/publish/en/books/bySubjectCS00/bySubSubjectCS40/0-470-02130-6/?sID="&gt;Symbian OS Explained&lt;/a&gt; "explained" nothing, just gave you some tips to become better Symbian programmers) or that the content in most books is similar (some complained that the content of &lt;a href="http://www.wiley-vch.de/publish/en/books/forthcomingTitles/CS00/0-470-87108-3/?sID=d05b"&gt;Symbian OS C++ for Mobile Phones&lt;/a&gt; is being recycled in other books).&lt;br /&gt;Well, I have no comments to make on that one. I will just stop at saying probably the idea was to make books available to a whole cross-section of developers who want to work on Symbian.&lt;br /&gt;"&lt;a href="http://www.wiley-vch.de/publish/en/books/newTitles200704/0-470-01846-1/?sID="&gt;The Symbian OS Architecture Sourcebook&lt;/a&gt;" takes a slightly approach. It goes a little deeper into what was already explored Stichbury, Tasker and Harrison.&lt;br /&gt;I just picked up this one from the office library. It was realised in May 2007 and is now is the Indian edition is available (which, I think, was the quickest for any Symbian Press' Indian editions).&lt;br /&gt;You can read the contents from the Wiley website. I will just give a brief intro to what I read so far. As I mentioned, the structure and the content of the book is rather different from other Symbian books. Morris doesn't dive deep into the programming issues, but instead tackles the following:-&lt;br /&gt;&lt;p&gt;a) A History of Symbian (and its parent: Psion) and its evolution. Morris makes adds quotes, anecdotes, interviews and other interesting tid-bits to spice up this section. It is a very good read from both Engineering and Management point of view.&lt;/p&gt;&lt;p&gt;b) A blow-up of Symbian Architecture and a piece-by-piece description of the individual components. This is the interesting part and the USP of this book. It discusses how do the various sub-systems (at various levels) fit into the OS. With a description and services provided by each sub-system.&lt;/p&gt;&lt;p&gt;c) Case studies: this is another first for a Symbian OS book. The top-brass techies at Symbian discuss 5 interesting case studies covering the issues they encountered. These are true stories and (from what I could read so far) the interviewees have been very candid. This is a good section again!&lt;/p&gt;&lt;p&gt;d) Symbian OS Component reference - this is an exhaustive (&gt;100 pages) appendix of the Symbian OS component model. Complete with pull outs of the component structure. This is more of a reference and I not designed to be read in one go.&lt;/p&gt;&lt;p&gt;On the whole, this is an interesting book. The best part is the interviews with the various top techies sprinkled through out the book. It gives an insight of how Symbian came into being and also gives very strong tips/comments/opinions on how software in general must be built and managed. &lt;/p&gt;&lt;p&gt;It is not for all audiences, if you ask me. I would only recommend it for those who have been developing on Symbian platforms for at least a year or more &lt;strong&gt;and&lt;/strong&gt; have a genuine interest in Symbian. This is meant to be used as a quick programming reference, so expect no such treats in here. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-7628603930772118799?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/7628603930772118799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=7628603930772118799' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/7628603930772118799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/7628603930772118799'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2007/07/symbian-os-architecture-sourcebook.html' title='The Symbian OS Architecture Sourcebook'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_xv6u2-T9zlE/Rq8H_A4VycI/AAAAAAAABGE/R-cFdLZZnXE/s72-c/DSC00177.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-58495204195455237</id><published>2007-07-09T09:21:00.001+05:30</published><updated>2007-07-31T18:49:36.096+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><title type='text'>iPhone internals exposed...</title><content type='html'>2 approaches to figure out what is the iPhone made up of:-&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.youtube.com/watch?v=Vy20b7pCcrY" target="_blank"&gt;http://www.youtube.com/watch?v=Vy20b7pCcrY&lt;/a&gt; (brute force)&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.youtube.com/watch?v=mPhciMud0MM" target="_blank"&gt;http://www.youtube.com/watch?v=mPhciMud0MM&lt;/a&gt; (a more professional, though drab, approach)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-58495204195455237?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/58495204195455237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=58495204195455237' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/58495204195455237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/58495204195455237'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2007/07/2-approaches-to-figure-out-what-is.html' title='iPhone internals exposed...'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-8192550311753987822</id><published>2007-06-28T13:38:00.000+05:30</published><updated>2007-07-31T18:49:30.503+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><title type='text'>Psion: the last computer | The Register</title><content type='html'>Psion is the parent company of Symbian. Psion was widely known for its path-breaking consumer hardware devices, especially PDAs and Organiser type devices. EPOC was their home-made flagship OS that was known far and wide for its stability and small foot-print. EPOC eventually became Symbian OS and now powers high-end smartphones from Nokia (N-series, E-series, Communicator, 6600, etc.), Sony Ericsson (most touchscreen smartphones like the P series, M600, W950, etc) and others.&lt;br /&gt;Psion was known for its innovative products and its engineering expertise.&lt;br /&gt;&lt;a href="http://www.theregister.co.uk/"&gt;The Register&lt;/a&gt; did a coverstory on Psion and its history. Makes a very interesting read...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.theregister.co.uk/2007/06/26/psion_special/"&gt;Psion: the last computer The Register&lt;/a&gt;&lt;br /&gt;&lt;p&gt;© &lt;a href="http://www.theregister.co.uk/"&gt;The Register&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-8192550311753987822?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.theregister.co.uk/2007/06/26/psion_special/' title='Psion: the last computer | The Register'/><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/8192550311753987822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=8192550311753987822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/8192550311753987822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/8192550311753987822'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2007/06/psion-last-computer-register.html' title='Psion: the last computer | The Register'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-4296628965548343302</id><published>2006-10-23T11:50:00.000+05:30</published><updated>2006-10-23T12:06:00.414+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Why is Symbian a pain - the World according to Microsoft</title><content type='html'>&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnppcgen/html/WMPrimer_Symbian.asp"&gt;.Net Compact Framework migration guide for Symbian developers&lt;/a&gt; on MSDN is rather funny. Looks like Big Bro is trying a last-ditch attempt to woo Symbian developers. I especially like their grand conclusion: "Because it's hard to do, fewer people do it; because few people do it, they're always in demand". Eh? :)&lt;br /&gt;Well, in all fairness, the article does point out some of the shortcomings of Symbian Development. Notably the steep learning curve, the lack of documentation and difficulty in debugging. But Symbian has been at work - there will be significant changes in Symbian development cycle pretty soon.&lt;br /&gt;Having said that: no one provides better support to the Developers than Big Bro - will have to give them that credit. But I can't understand why do they need to taint MSDN with such lame articles? For instance, the author harps about what a waste the Cleanupstack is. Hey! Hang on, Symbian needs a Cleanupstack because there is no Garbage-collection, dude. This shouldn't even be an issue during comparision!&lt;br /&gt;Big Bro is very worried, no?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-4296628965548343302?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/4296628965548343302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=4296628965548343302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/4296628965548343302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/4296628965548343302'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2006/10/why-is-symbian-pain-world-according-to.html' title='Why is Symbian a pain - the World according to Microsoft'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-116004487448846471</id><published>2006-10-05T16:11:00.000+05:30</published><updated>2006-10-11T12:21:20.496+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><title type='text'>Rainbow Versatile Disc - Paper-based storage device (?)</title><content type='html'>Fact or fiction? Interesting anyway...&lt;br /&gt;Sainul, a young student from Kerala  seems to have come up with a path breaking new technology that will beat all the available data storage options so far.&lt;br /&gt;RVD is cheaper and more compact than any of the other storage options. What's more - it is bio-degradable too! Data is stored on paper!!!!&lt;br /&gt;Sainul also seems to be in the process of striking a deal with some company in the UK to manufacture Rainbow Cards - tiny SIM-sized cards that can hold data equivalent to 2 or 3 DVDs!&lt;br /&gt;If this is true, be prepared for the next data storage revolution (BluRay: make way).&lt;br /&gt;Read it all:-&lt;br /&gt;&lt;a href="http://www.deccanherald.com/deccanherald/Sep62006/cyberspace163748200695.asp"&gt;Paper-based storage device - Deccan Herald - Internet Edition&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-116004487448846471?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/116004487448846471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=116004487448846471' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/116004487448846471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/116004487448846471'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2006/10/rainbow-versatile-disc-paper-based.html' title='Rainbow Versatile Disc - Paper-based storage device (?)'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-115884635330409384</id><published>2006-09-21T19:02:00.000+05:30</published><updated>2006-10-11T12:21:20.437+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><title type='text'>SMS Accelerator for Nokia phones</title><content type='html'>Just when I was celebrating being the proud owner of my &lt;a href="http://arbit_thoughts.blogspot.com/2006/08/week-that-was.html"&gt;Nokia 3250&lt;/a&gt;; I realised that it is prone to a very serious bug. Sending a Text message (especially replying) from this phone (along with a lot of other Symbian 9.1-based Nokia phones - E61, N80, etc.)  becomes painfully slow after a certain period of time. Typically, after you have sent a few hundred messages.&lt;br /&gt;In my case, it used to take 30-40 sec to return to the original screen after clicking on the Send button! The phone seemed to hang.&lt;br /&gt;Nokia has come up with a patch for this bug and has made it available on their website. The application is called &lt;a href="http://www.europe.nokia.com/A4149142"&gt;SMS Accelerator&lt;/a&gt;. Though the website didn't explicitly mention that the application will work for 3250 as well, it did seem to make a significant difference in the Messaging performance on my phone&lt;br /&gt;This app seems to be for Symbian 9.1 (and above). I would consider it safe to be used for any 9.1 based Nokia device (including N-series and E-series).&lt;br /&gt;&lt;strong&gt;BUT: Caveat Emptor - Use it at your risk&lt;/strong&gt;. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-115884635330409384?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/115884635330409384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=115884635330409384' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/115884635330409384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/115884635330409384'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2006/09/sms-accelerator-for-nokia-phones.html' title='SMS Accelerator for Nokia phones'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-115633489971475911</id><published>2006-08-23T17:05:00.000+05:30</published><updated>2006-10-11T12:21:20.307+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>C++: Overloading the Post Increment and Pre Increment operators</title><content type='html'>&lt;span style="color:#000000;"&gt;(Special thanks to Mr. Krishna Vasudevan for his comments and help) &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;What are Pre- and Post- increment Operators? &lt;/strong&gt;&lt;br /&gt;They are of the type: ++obj (pre) and obj++ (post). In standard C++, these operators are defined for some basic types like int, where such operators represent incrementing the object by a single unit.&lt;br /&gt;Viz.,&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000000;"&gt;int j = 10;&lt;br /&gt;int k = ++j;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000000;"&gt;// j is now 11, so is k. Because in this PRE increment, j&lt;br /&gt;// is incremented first&lt;br /&gt;// and the assignment is done later.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;k = j++; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;// j is now 12, but k still has the old value of j (i.e., 11). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;// The assignment is done first and the increment is done later &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;// (hence, POST-increment).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;As you would have noted, both the pre- and post-increment operators are unary in nature. Also, they are among the operators that C++ allows user-defined classes to overload. This article will discuss about these overloads.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;When should we overload these operators?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Though I talk about pre- and post-increment operators in this article, what I say next holds good for all operator overloads in C++. Most of the books, articles, FAQs, etc. have mentioned this countless no. of times and I do it again in my humble article:&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;• Go for an operator overload ONLY if it makes semantic sense and makes things more intuitive for the user.&lt;br /&gt;• Do not wander away from the classical definition of the overloaded operator. Viz., if you are overloading the post-increment operator for your class, make sure that the net effect on the class’ object(s) after using this operator confirms with the “classical” definition of post-increment (as shown above). This is what is called “the Doctrine of Least Surprise” (I first came across this term in C++ FAQs and instantly fell in love with it). Don’t surprise your user trying to make your code do things that she does not expect. In short, avoid any side-effects that might creep in when you try to make your code lean and mean. Remember that operator overloads are for the ease of the code’s client and there are very rare cases where such overloads really add any significant performance advantage – so don’t go overboard.&lt;br /&gt;• And again: stick to the classical definition of the operator. Do not expect the code’s client to learn a new thing. In case you are thinking of adding a new functionality to your class that is not covered by the conventional operators (e.g., n-th power for a Complex class), DO NOT force-overload an existing operator (e.g., ^ is for XOR; even if your hand-rolled class doesn’t need an XOR operation, DO NOT overload the ^ operator for n-th power). Instead write a new method.&lt;br /&gt;&lt;br /&gt;Getting back to Pre- and Post-increment operators, one question every C++ programmer has when she dabbles with the operator overloading business is: “How on Earth can give an overload for a unary operator that takes no parameters?”&lt;br /&gt;This question is not silly; so don’t think twice before asking it. The reason is because the way C++ supports Pre- and Post-increment overloads is not intuitive at all. As the legend goes, early versions of C++ did not support the Post-increment at all! There was just pre-increment option for those interested. Logically there was no great deal to be achieved with the post-increment.&lt;br /&gt;I guess then someone must have pointed that post-increment has its own uses and there are certain post-increment loyalists who are going to be quite annoyed if it is not supported. (“Hey! The operator gave this language its name! That’s why this darn language is not ++C” – they would have argued). And so, the post-increment support was added.&lt;br /&gt;How? Well, it is more of a hack, because logically there is no way to overload a unary operator which uses no operators. Hence the post-increment operator overload uses a dummy operator, an “int” to be precise.&lt;br /&gt;The prototype for a post-increment operator looks like this:-&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;class&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000000;"&gt;&lt;class&gt;&lt;&lt;type&gt;&gt; operator ++ (int /*unused*/) // Form 1&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;or alternatively,&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000000;"&gt;void operator ++(int /*unused*/) // Form 2&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;It is up to the designer to decide which version she would like to support. The former must be used if an assignment is likely with the post-increment:&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;blockquote&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;CX obj2 = obi1++; // Use Form 1 and remember to overload the&lt;br /&gt;// copy ctor and the assignment operator as well&lt;/span&gt; &lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;Now, some would be curious about what comes in as an argument for the post-increment overload. Well, on my compiler, this value is 0. But beware: consult what the C++ standard says about this. In any case since this parameter is to distinguish the post-increment from pre-increment – I would NEVER use just for kicks.&lt;br /&gt;Also notice that the prototype of post-increment returns a COPY of the object, not the object itself! So add a mental note of the temporary object being created here. Be aware of it, especially those working on memory critical platforms.&lt;br /&gt;Here’s why we do not return a reference:-&lt;br /&gt;The aim of the post-increment is to “increment” (however it may be defined for the class) the object by a unit “internally” but reflect this state later during the next reference. So a common implementation for this would be:-&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;CX temp = *this; // Save the object in the current state&lt;br /&gt;++(*this); // Call the pre-increment overload – reuse code if it is&lt;br /&gt;// efficient enough&lt;br /&gt;return temp; // Return the saved state.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;Since we need to hold the current state temporarily and return the same, we can’t return using a reference to the temporary variable. Simple.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;So, what happens if I DON’T implement a post-increment operator overload?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Well, if you have an overload for pre-increment, then this overload is called if no post-increment is found:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;“no postfix form of 'operator ++' found for type &lt;&lt;class&gt;&gt;, using prefix&lt;br /&gt;form” =&gt; is what I get on VC++ 6.0 with sufficient Warning Levels.&lt;br /&gt;If&lt;br /&gt;there no pre-increment either, then you will get a compiler error:-&lt;br /&gt;“binary&lt;br /&gt;'++' : 'class &lt;&lt;class&gt;&gt; does not define this operator or a conversion to a&lt;br /&gt;type acceptable to the predefined operator” =&gt; Error on my VC++ 6.0 compiler.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;And of course, as always, refer to C++ FAQs which is a treasure house of all C++ things great and small. Here’s the online article on operator overloading: &lt;/span&gt;&lt;a href="http://www.parashift.com/c++-faq-lite/operator-overloading.html"&gt;&lt;span style="color:#000000;"&gt;http://www.parashift.com/c++-faq-lite/operator-overloading.html&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-115633489971475911?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/115633489971475911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=115633489971475911' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/115633489971475911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/115633489971475911'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2006/08/c-overloading-post-increment-and-pre.html' title='C++: Overloading the Post Increment and Pre Increment operators'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-114424314413811076</id><published>2006-04-05T18:49:00.000+05:30</published><updated>2006-10-11T12:21:20.071+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><title type='text'>Symbian expands India operations - Deccan Herald - Internet Edition</title><content type='html'>&lt;a href="http://www.deccanherald.com/deccanherald/apr52006/business163438200644.asp"&gt;Symbian expands India operations - Deccan Herald - Internet Edition&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-114424314413811076?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/114424314413811076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=114424314413811076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/114424314413811076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/114424314413811076'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2006/04/symbian-expands-india-operations.html' title='Symbian expands India operations - Deccan Herald - Internet Edition'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-113569017369115616</id><published>2005-12-27T18:59:00.000+05:30</published><updated>2006-10-11T12:21:20.013+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security/Cryptography'/><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><title type='text'>Schneier on Security: SHA-1 Broken</title><content type='html'>Hmmm...SHA is broken. News from the dude himself:-&lt;br /&gt;&lt;a href="http://www.schneier.com/blog/archives/2005/02/sha1_broken.html"&gt;Schneier on Security: SHA-1 Broken&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-113569017369115616?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/113569017369115616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=113569017369115616' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/113569017369115616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/113569017369115616'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/12/schneier-on-security-sha-1-broken_27.html' title='Schneier on Security: SHA-1 Broken'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-113505098109561871</id><published>2005-12-20T09:17:00.000+05:30</published><updated>2006-10-11T12:21:19.831+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>Design Pattern: Template Method</title><content type='html'>Template Method (TM) is a Behavioral Class Pattern, which means it deals with the assignment of responsibilities between classes. The idea is to distribute responsibility between the member of a family using Inheritance.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Definition&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;Here's the GoF Intent for TM: “Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure”&lt;br /&gt;In plainer words, Template Method allows the designer to create an abstract base class that represents the "spirit" of the real-life entity being encapsulated. At this level of abstraction, if there is some parts of the behavior (steps) of which the implementation details are not known, then such behavior is represented by a set of pure virtual functions. (Yes I am a C++ guy). The "skeleton" of the behavior (or algorithm, if you please) is an implemented method, the Template Method.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Scenarios for Use&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;When one can see the problem domain has a number of similar entities that exhibit similar behavior most of the time but have some deviant behavior. That is, the designer is tempted to classify these entities in a single class but can't because of the deviant behavior.&lt;/li&gt;&lt;li&gt;Similar to the point above: When a majority of problem domain entities are all similar with the exception of a few entities that have deviant behavior.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;"Template Method" allows the designer (and the developer) to encapsulate the basic, common behavior in a base class and defer the implementation of the deviant behavior to a derived class. This has 2 advantages:- First, the code for the common behavior is not duplicated in the set of classes (obviously) and Second, the base class "looks complete" in principle. That is, looking at the base class, one can say - "Oh, OK! This class behaves in such-and-such a manner (the Template Method) and it comprises of several steps, some of which the class doesn't yet know how exactly will it implement. These steps will be defined by the derived classes subsquently"&lt;/p&gt;&lt;p&gt;This is one of the most simple and extensively used design patterns. However, there seems to be a confusion in the terminology. So here are some hints:-&lt;/p&gt;&lt;ul&gt;&lt;li&gt;It is called "Template Method", not just "Template". Stick to this term. More on this later.&lt;/li&gt;&lt;li&gt;It has nothing to do with C++ Templates. "C++ Template" is C++ jargon, don't confuse with this Design Pattern&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Remember that the "Template Method", like all other Design Patterns is more of a standard idea to crack a problem - it is NOT an algorithm or a tool or even a solution. It is a trend, a common approach. Most importantly it is a part of the vocabulary. Using this term, you can avoid using implementation jargon.&lt;/p&gt;&lt;p&gt;Now for some diagrams (can't avoid it, can we?):&lt;/p&gt;&lt;br /&gt;&lt;a title="Photo Sharing" href="http://www.flickr.com/photos/70683535@N00/75572976/"&gt;&lt;img height="240" alt="Template Method" src="http://static.flickr.com/43/75572976_277601c306_o.jpg" width="403" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;Courtesy: GoF's Design Patterns : Elements of Reusable Object-Oriented Software &lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;As you can see there are 2 types of methods in the diagram:-&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Template Method - an method implemented in the Abstract base class that has several steps or "privitive operations" (see the pseudo-code in the note)&lt;/li&gt;&lt;li&gt;Primitive Operations - methods that are defined in the base class, are used by the Template Method, but whose implementation is deferred to the derived class(es).&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;In other words, a Template Method:-&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Embodies a behavior (or algorithm) and consists of a series of primitive operations&lt;/li&gt;&lt;li&gt;Looks "Complete" in spite of the fact that the primitive operations are not defined.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;What is this "Hook" thingy?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I guess there is some strife in the OOAD world on whether the Primitive Operations should necessarily have no implementation in the base class (pure virtual methods in C++) or may have some default implementation in the base class but can be overridden by the derived classes (virtual methods).&lt;/p&gt;&lt;p&gt;Hence, our good friends in the GoF decided to address this by defining the term: Hook. &lt;/p&gt;&lt;p&gt;As per book, Hook Operations "provide default behavior that subclasses can extend if necessary. A hook operation often does nothing by default.". So, Primitive Operations become &lt;em&gt;pure virtual &lt;/em&gt;in code and Hook Operations become &lt;em&gt;virtual&lt;/em&gt;. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Example&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;By now, you would be saying: "This Template Method is no big deal, we have done it all along. Why have a Design Pattern dedicated to this?". Well, no Design Pattern promises solving problem with black magic. TM is a very commonly used (and sadly, abused) technique, what the GoF have done is: compiled it in their list of DPs and given it a name. It is very important to build up a common vocabulary in a group of developers from diverse working backgrounds. DPs help in this, IMHO.&lt;/p&gt;&lt;p&gt;Since you know that TM is no big deal, I will stick to a simple example. TM is (or can used) in a GUI component family for say, redrawing. You can have a Template Method called Redraw() that will do 2 things: a) Clean the background, b) Draw stuff.&lt;/p&gt;&lt;p&gt;&lt;a title="Photo Sharing" href="http://www.flickr.com/photos/70683535@N00/75821688/"&gt;&lt;img height="220" alt="Template Method GUI example" src="http://static.flickr.com/41/75821688_6a3a9dff35_o.jpg" width="376" /&gt;&lt;/a&gt;&lt;br /&gt;Clearly, since the drawing and Cleaning the background part is the responsibility of the particular GUI component class, not the generic base class. Hence, these behaviors can treated as "Primitive Operations". The "Redraw" method, however, can be defined in the base class itself and shall be the "Template Method" in this example.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-113505098109561871?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/113505098109561871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=113505098109561871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/113505098109561871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/113505098109561871'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/12/design-pattern-template-method.html' title='Design Pattern: Template Method'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-113142098400313460</id><published>2005-11-08T09:03:00.000+05:30</published><updated>2006-10-11T12:21:19.715+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security/Cryptography'/><title type='text'>Chinese Remainder Theorem</title><content type='html'>Chinese thinker Sun Tse came up with this. It states that for any number &lt;em&gt;n&lt;/em&gt;, with a prime factorization as:-&lt;br /&gt;&lt;strong&gt;&lt;em&gt;n&lt;/em&gt; = &lt;em&gt;p&lt;span style="font-size:78%;"&gt;1&lt;/span&gt;&lt;/em&gt;*&lt;em&gt;p&lt;span style="font-size:78%;"&gt;2&lt;/span&gt;&lt;/em&gt;*&lt;em&gt;p&lt;span style="font-size:78%;"&gt;3&lt;/span&gt;&lt;/em&gt;…p&lt;span style="font-size:78%;"&gt;k&lt;/span&gt;&lt;/strong&gt;; where these factors are prime or at least “pair-wise relatively prime”, i.e., any two of these do have any common factors; then, the family of equations of the form:-&lt;br /&gt;&lt;strong&gt;(&lt;em&gt;x&lt;/em&gt; MOD &lt;em&gt;p&lt;span style="font-size:78%;"&gt;i&lt;/span&gt;&lt;/em&gt;) = &lt;em&gt;a&lt;/em&gt;&lt;span style="font-size:78%;"&gt;i&lt;/span&gt;&lt;/strong&gt;; where&lt;em&gt; i&lt;/em&gt; = 1, 2, 3…&lt;em&gt;k&lt;/em&gt; and 0&lt;&lt;em&gt;x&lt;/em&gt;&lt;&lt;em&gt;n&lt;/em&gt; has a unique solution.&lt;br /&gt;&lt;br /&gt;In other words: a number &lt;em&gt;n&lt;/em&gt;, less than the products of some prime or pair-wise relatively prime numbers, can be uniquely identified by its residues MOD these primes. It automatically implies that n cannot be a perfect power, viz., a perfect square or a perfect cube.&lt;br /&gt;&lt;br /&gt;E.g., consider the &lt;em&gt;n&lt;/em&gt; = 20; now 20 = 5*4; 5 and 4 being relatively prime. Now select a number between 1 and 19; say 14 and get the residues MOD 5 and 4:- 14 MOD 5 = 4; 14 MOD 4 = 2.&lt;br /&gt;The residue tuple (4, 2) uniquely represents the number 14 in our system of numbers (1 to 20) now. That is, no other number from 1 to 20 will result in the same residue set. Other residue tuples in this set will be:-&lt;br /&gt;1 = (1, 1); 2 = (2, 2); 3 = (3, 3); 4 = (4, 0); 5 = (0, 1); 6 = (1, 2); 7 = (2, 3); 8 = (3, 0); 9 = (4, 1); 10 = (0, 2) and so on.&lt;br /&gt;The Chinese remainder theorem’s principle may be useful while dealing with a range of very large numbers. Instead of saving the whole numbers, we may choose the represent the numbers by these tuples, which may be easier to store and work with.&lt;br /&gt;&lt;br /&gt;For example, consider the number 483189 = 3*7*19*1211.&lt;br /&gt;This is how we would represent the number 20000 as a tuple of these prime factors:-&lt;br /&gt;20000 MOD 3 = 2; 20000 MOD 7 = 1; 20000 MOD 19 = 12; 20000 MOD 1211 = 624.&lt;br /&gt;Hence 20000 = (2, 1, 12, 624)&lt;br /&gt;Now consider we want to add 2 numbers – 20000 and 23456.&lt;br /&gt;We can work off the tuples instead of the numbers themselves:-&lt;br /&gt;20000 = (2, 1, 12, 624) and 23456 = (2, 6, 10, 447)&lt;br /&gt;So 20000 + 23456 =&gt; (2, 1, 12, 624) + (2, 6, 10, 447) = (1, 0, 3, 1071).&lt;br /&gt;Notice that after adding the individual items, the residue is again calculated to present the result. The resultant tuple represents the actual result (43456 = 20000 + 23456)&lt;br /&gt;43456 MOD 3 = 1, 43456 MOD 7 = 0, 43456 MOD 19 = 3, 43456 MOD 1211 = 1071.&lt;br /&gt;Hence 43456 = (1, 0, 3, 1071). Presto!&lt;br /&gt;&lt;br /&gt;Similarly, using other rules of modular arithmetic, many operations on large numbers can be simplified by using the Chinese Remainder tuples.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-113142098400313460?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/113142098400313460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=113142098400313460' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/113142098400313460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/113142098400313460'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/11/chinese-remainder-theorem.html' title='Chinese Remainder Theorem'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-112383133451443323</id><published>2005-08-12T12:52:00.000+05:30</published><updated>2006-10-11T12:21:19.649+05:30</updated><title type='text'>Dear PC, many happy returns of the day!</title><content type='html'>&lt;a title="photo sharing" href="http://www.flickr.com/photos/70683535@N00/33346687/"&gt;&lt;img style="BORDER-RIGHT: #000000 2px solid; BORDER-TOP: #000000 2px solid; BORDER-LEFT: #000000 2px solid; BORDER-BOTTOM: #000000 2px solid" alt="" src="http://photos22.flickr.com/33346687_8c749e62bb_m.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="MARGIN-TOP: 0px;font-size:0;" &gt;&lt;a href="http://www.flickr.com/photos/70683535@N00/33346687/"&gt;IBM_PC_5150&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;This was the first IBM PC introduced on Aug 12, 1981. Source: &lt;a href="http://en.wikipedia.org/wiki/Image:IBM_PC_5150.jpg"&gt;Wikipedia &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In 1981, on this date (12th August) IBM introduced the first PC – The IBM 5150. Equipped with an Intel 8088 chip and 16K RAM (and a variant in 64K) and the almighty MS-DOS Operating system, with the hottest killer apps like the VisiCalc spreadsheet. Within a year, the PC became such a hit that Time magazine named the PC as the “Man of the Year” for 1982!&lt;br /&gt;Today, 24 years later, our mobile phones have more processing power than the 5150. Everything is digital – from car ignitions to space shuttle controls and everything in between. But let us pay homage to the humble beginnings of the Digital Era.&lt;br /&gt;Here’s cheering the pioneers who contributed to the PC revolution, particularly &lt;a href="http://en.wikipedia.org/wiki/Don_Estridge"&gt;Don Estridge &lt;/a&gt;and his team who were responsible for designing the IBM PC. Guys, thank you so much.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-112383133451443323?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/112383133451443323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=112383133451443323' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/112383133451443323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/112383133451443323'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/08/dear-pc-many-happy-returns-of-day.html' title='Dear PC, many happy returns of the day!'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-112366451809374433</id><published>2005-08-10T14:31:00.000+05:30</published><updated>2006-10-11T12:21:19.533+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><title type='text'>Foo and bar</title><content type='html'>You wouldn't believe this. There is actually a RFC on the origin and usage of "Foo" and "Bar" - names given to temporary, sometimes inconsequential naive functions used to illustrate concepts in Object Oriented Programming.&lt;br /&gt;As far as I knew, FooBar comes from the military slang FUBAR(F**ked Up Beyond All Recognisition); another theory was it is a variant of &lt;em&gt;furchtbar &lt;/em&gt;- the German word for bad or terrible. But a whole RFC dedicated to this??? Wow! Long live the Geeks! :)&lt;br /&gt;&lt;a href="http://www.faqs.org/rfcs/rfc3092.html"&gt;RFC 3092 (rfc3092) - Etymology of "Foo"&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But look closely at the date of publication. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-112366451809374433?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/112366451809374433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=112366451809374433' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/112366451809374433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/112366451809374433'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/08/foo-and-bar.html' title='Foo and bar'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-112299071769413470</id><published>2005-08-02T19:21:00.000+05:30</published><updated>2006-10-11T12:21:19.477+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><title type='text'>Turing machine using Lego blocks!</title><content type='html'>Sounds absurd? Check it out&lt;br /&gt;&lt;a href="http://mapageweb.umontreal.ca/cousined/lego/5-Machines/Turing/Turing.html"&gt;Turing machine&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-112299071769413470?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/112299071769413470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=112299071769413470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/112299071769413470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/112299071769413470'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/08/turing-machine-using-lego-blocks.html' title='Turing machine using Lego blocks!'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-112263986208702539</id><published>2005-07-29T17:54:00.000+05:30</published><updated>2006-10-11T12:21:19.416+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>VPtr and VPtr contents</title><content type='html'>&lt;p&gt;Well I had mentioned in my &lt;a href="http://all_work_no_play.blogspot.com/2005/07/strange-case-of-pure-virtual.html"&gt;last post&lt;/a&gt; that “AFAIK, an invalid address (e.g., NULL) is set against the entry for the pure virtual function indicating that the function cannot be called”. This seems to be wrong (at least as far as VC++ is concerned). Mea culpa.&lt;br /&gt;I wrote some code to check the contents of the table and “indirectly” call the virtual functions. I saw that when a pure virtual function is present in a class, it has an entry in the VTABLE and that is not NULL. It actually points to a exit() implementation (_amsg_exit(), in MS VC++)! &lt;/p&gt;&lt;br /&gt;&lt;div style="MARGIN-BOTTOM: 10px; MARGIN-LEFT: 10px; WIDTH: 238px; HEIGHT: 142px"&gt;&lt;a title="photo sharing" href="http://www.flickr.com/photos/70683535@N00/29449526/"&gt;&lt;img style="BORDER-RIGHT: #000000 2px solid; BORDER-TOP: #000000 2px solid; BORDER-LEFT: #000000 2px solid; BORDER-BOTTOM: #000000 2px solid" alt="" src="http://photos21.flickr.com/29449526_ca6533fd0a_m.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="MARGIN-TOP: 0px;font-size:0;" &gt;&lt;b&gt;VPtr and VPtr contents&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Actually, the function looks like this:-&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;void __cdecl _purecall(void)&lt;br /&gt;{&lt;br /&gt;&lt;tab&gt;_amsg_exit(_RT_PUREVIRT);&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;Your application dies with an unsightly error message which mentions a pure virtual call!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;An interesting experiment&lt;br /&gt;&lt;/strong&gt;Now consider the following piece of code:-&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;class ABS&lt;br /&gt;{&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    public:&lt;br /&gt;    ABS();&lt;br /&gt;    virtual void Func() = 0;&lt;br /&gt;    void Dissect(); &lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ABS::ABS()&lt;br /&gt;{&lt;br /&gt;    Func();&lt;br /&gt;    Dissect();&lt;br /&gt;}&lt;br /&gt;void ABS::Func()&lt;br /&gt;{&lt;br /&gt;//Give some default implementation, viz. set the&lt;br /&gt;//defaults in a Database, etc.&lt;br /&gt;    cout &lt;&lt; “Default Base class implementation”; &lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;void ABS::Dissect() &lt;/p&gt;&lt;p&gt;{ /*&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;In this function, we will try to dissect the this pointer and obtain the vptr.&lt;br /&gt;The vptr is expected to be the first sizeof(int) bytes pointed by the this pointer (this may be implementation dependent).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;*/&lt;br /&gt;    typedef void (*FP_PV)();&lt;br /&gt;    int *pVTable;&lt;br /&gt;    FP_PV ptr;&lt;br /&gt;    //this--&gt;&gt;vptr--&gt;&gt;vtable&lt;br /&gt;    pVTable = (int *)(((int *)this)[0]);&lt;br /&gt;    //Our virtual function should be the first (and only) entry&lt;br /&gt;    ptr = (FP_PV)pVTable[0];&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;    //Try to call the function.&lt;br /&gt;    ptr();&lt;br /&gt;}&lt;br /&gt;class CONC : public ABS&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;    void Func();&lt;br /&gt;}&lt;br /&gt;void CONC::Func()&lt;br /&gt;{&lt;br /&gt;//Give class specific implementation.&lt;br /&gt;    cout &lt;&lt; “Derived class specific implementation”; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;} &lt;/span&gt;&lt;/p&gt;&lt;p&gt;And the following client code:-&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    CONC objY;&lt;/span&gt;&lt;br /&gt;You can trace out what will happen when the above statement will execute; the flow will be as follows:-&lt;br /&gt;1. ABS::ABS()&lt;br /&gt;2. ABS::Func() – the “stand-by” implementation of the pure virtual will be called.&lt;br /&gt;3. ABS::Dissect() – we will stop here and check what happens.&lt;br /&gt;This is truly interesting. Dissect() crashes with the “pure virtual function called” error! When you check the VTABLE contents, it shows that the PV function entry is set to the _purecall(void)method’s address!&lt;br /&gt;Now the question is if the VTABLE doesn’t content the address to the “stand-by” PV method implementation in class ABS, then HOW does it call the function when Func() is called from the ctor of ABS? Is the address of the “stand-by” Func() implementation inserted at link-time or compile time?&lt;br /&gt;Aaaarghhhhh! &lt;&lt;tearing&gt;&gt;&lt;br /&gt;Somebody help!&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-112263986208702539?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/112263986208702539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=112263986208702539' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/112263986208702539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/112263986208702539'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/07/vptr-and-vptr-contents.html' title='VPtr and VPtr contents'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-112247345476664833</id><published>2005-07-27T19:35:00.000+05:30</published><updated>2006-10-11T12:21:19.346+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>The Strange case of a pure virtual destructor</title><content type='html'>&lt;p&gt;But first, what is a virtual destructor and what is a pure virtual function?&lt;br /&gt;A Virtual function is one that MAY be overridden by derived classes.&lt;br /&gt;A Pure Virtual function is one that MUST be overridden by derived classes.&lt;br /&gt;Q: So, what is a virtual destructor?&lt;br /&gt;A: A Virtual destructor is a special virtual function. The definition of a Virtual function given above doesn’t apply to Virtual destructor “as-is”. This is because a derived class doesn’t (and cannot) override the base class’ destructor. This is an important point that most books leave out and may mislead beginners. The authors probably assume that the users will “understand” this subtle difference, but it always isn’t that clear sometimes&lt;br /&gt;This is what a virtual destructor signifies:-&lt;/p&gt;&lt;ul&gt;&lt;li&gt;There is a class hierarchy and base class pointers are used to refer derived class objects.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;There is some cleanup to be done in the base and the derived classes both.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;When the pointer object is “delete”d, the elements of the hierarchy will be destroyed in their order of creation. That is, first the derived class destructor will be called and then the base class destructor will be called.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If a base class destructor is not made virtual and if you use a base class pointer to hold a derived class object, then during a “delete” ONLY the base class dtor will be called! This means there can be a potential memory leak because the cleanup actions in the derived class destructor are never performed.&lt;br /&gt;Q: What is a pure virtual destructor, then?&lt;br /&gt;A: Let’s study dtors a bit first. In C++, an object needs to give some help to the compiler (run-time, rather) to destroy itself. This is done via the destructor. So, even if you leave out defining an explicit dtor in your class definition, the compiler will create one for the class.&lt;br /&gt;So, given this fact, dtors seem to be all important. Then why should C++ support a pure virtual destructor? Well, the common answer to this is: if you have to create an abstract class and because of your encapsulation doesn’t allow you to have a pure virtual function in the base class, then make the destructor private. Hmmm….right, but I think there are other ways of doing this, like making the ctor “protected” – this will not result in an ABC but it is as good as one. With my limited knowledge, this looks more of a hack to get around C++’s limitation of having at least one pure virtual function in an ABC (other languages, like C# and VB.Net do not have this limitation).&lt;br /&gt;Back to our question: What is a pure virtual destructor?&lt;br /&gt;First of all, pure virtual functions do not necessarily mean that they should have NO implementation in the base class – remember this fact. Pure virtual functions mean that they MUST be overridden by derived classes.&lt;br /&gt;Second, a pure virtual function can be defined as:-&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;class X&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;      virtual ~X() = 0;&lt;br /&gt;};&lt;br /&gt;&lt;/span&gt;This is the correct declaration. But things don’t stop here. Consider this derived class and client code:-&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;class Y: public X&lt;br /&gt;{&lt;br /&gt;//Yep! That’s right there is no need to define an explicit dtor&lt;br /&gt;//for the derived class just because the base class dtor is&lt;br /&gt;//pure virtual&lt;br /&gt;};&lt;br /&gt;//Client code 1...&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;          X *p = new Y;&lt;br /&gt;          delete p;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;What do you think will happen?&lt;br /&gt;The linker will try to locate the destructor of the base class (X) and boom! – you have errors like these (on MS VC6)&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;error LNK2001: unresolved external symbol "public: virtual __thiscall X::~X(void)" (??1X@@UAE@XZ)&lt;br /&gt;&lt;/span&gt;To get around this problem, we should give an implementation for the pure virtual destructor:-&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;class X&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;      virtual ~X() = 0;&lt;br /&gt;};&lt;br /&gt;X::~X()&lt;br /&gt;{&lt;br /&gt;      //Some cleanup code. Can be empty too!&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;Q: Wait a minute; pure virtual functions are not supposed to have an implementation, right?&lt;br /&gt;A: Wrong. (Most) C++ compilers accept implementations for pure virtual functions and in case of destructors – this is mandatory! As I had mentioned before there are 2 things you need to keep in mind here:-&lt;br /&gt;a)     Pure virtual functions are the ones that MUST be overridden by the derived classes. In C++, there is no rule that PV functions cannot have an implementation!&lt;br /&gt;b)     A Pure virtual dtor is slightly different from any other pure virtual function in that a PV (or virtual) base class dtor is not actually “overridden” by the derived class. It is used for proper cleanup calls.&lt;br /&gt;If you compile the code with this new addition, it will compile and link fine! If you run and debug the code, you will find that control is transferred to the X:~X() after the “delete” call in the client.&lt;br /&gt;The moral of the story is that a pure virtual destructor MUST have an implementation. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Pure virtual functions with implementations&lt;/strong&gt;&lt;br /&gt;So, it is possible to have a “stand-by” implementation for a pure virtual function. But what does the compiler do with it? This is an interesting issue and apparently there are a few uses for this PV function’s implementation.&lt;br /&gt;Herb Sutter (author of books “Exceptional C++” and “More Exceptional C++”) mentions these in his good article on Guru of the Week GotW # 31 (&lt;a href="http://www.gotw.ca/gotw/031.htm"&gt;http://www.gotw.ca/gotw/031.htm&lt;/a&gt;). I have given the essence of the article below.&lt;br /&gt;Basically, there 3 scenarios wherein an implementation of a PV function is useful. One is the PV dtor scenario we have already seen.&lt;br /&gt;Second, is to “protect” a default implementation of a virtual function from the derived classes. That is when you have some default (or even dummy implementation) for a behavior (i.e., method in the class) but you want to FORCE the derived classes to provide their own implementation. In other words, you don’t want the derived classes to “blindly inherit” the default, base class implementation. Here’s some example code:-&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;class X&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;      virtual void Func() = 0;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;void X::Func()&lt;br /&gt;{&lt;br /&gt;      //Give some default implementation, viz. set the defaults in a Database, etc.&lt;br /&gt;      cout &lt;&lt; “Default Base class implementation”;&lt;br /&gt;}&lt;br /&gt;class Y : public X&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;      void Func();//The client is force to override this function&lt;br /&gt;}&lt;br /&gt;void Y::Func()&lt;br /&gt;{&lt;br /&gt;      //Give class specific implementation.&lt;br /&gt;      cout &lt;&lt; “Derived class specific implementation”;&lt;br /&gt;      //Or, explicitly invoke the base class implementation!&lt;br /&gt;      X::Func(); //This is possible!&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;The third scenario for using PV functions with implementations is the rarest but the most interesting one. Consider the classes X and Y of the last scenario with this minor change in class X:-&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;class X&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;      X() {Func()};&lt;br /&gt;      virtual void Func() = 0;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;Now consider this client code:-&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;X *p = new Y();//Standard Base class ptr to derived class object stuff.&lt;br /&gt;&lt;/span&gt;This will cause the ctor of the Base class to be called. But at that point, the derived class object is NOT created. Hence, the runtime will call the base class implementation of Func(). The base class has a PV version of Func() so the Linker will complain. However, if you give an implementation for such a PV, then that gets called – almost magically.&lt;br /&gt;However, it is a really bad practice to call virtual functions in the ctor, so avoid this type of code.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Vexed by the VTABLE&lt;/strong&gt;&lt;br /&gt;OK. So what happens to the class’ VTABLE when you declare a pure virtual function? AFAIK, an invalid address (e.g., NULL) is set against the entry for the pure virtual function indicating that the function cannot be called.&lt;br /&gt;If this is true, then how does the run-time detect this “stand-by” implementation of a pure virtual function?&lt;br /&gt;Any hints?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-112247345476664833?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/112247345476664833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=112247345476664833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/112247345476664833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/112247345476664833'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/07/strange-case-of-pure-virtual.html' title='The Strange case of a pure virtual destructor'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-112071218407486854</id><published>2005-07-07T10:26:00.000+05:30</published><updated>2006-10-11T12:21:19.287+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><title type='text'>Symbian India Officially announced</title><content type='html'>OK. So now they have gone ahead made the official announcement. Though this process had started a couple of months back. And here I am right in the heat of things. Wish Symbian India all the best&lt;br /&gt;&lt;a href="http://www.thehindubusinessline.com/2005/07/07/stories/2005070701930500.htm"&gt;The Hindu Business Line : Symbian opens India subsidiary&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-112071218407486854?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/112071218407486854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=112071218407486854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/112071218407486854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/112071218407486854'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/07/symbian-india-officially-announced.html' title='Symbian India Officially announced'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-111873837520990513</id><published>2005-06-14T14:09:00.000+05:30</published><updated>2006-10-11T12:21:19.172+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><title type='text'>The Capability Im-Maturity Model (CIMM) </title><content type='html'>An organization should go for this before CIMM to check how incompetent it is. :-P&lt;br /&gt;&lt;a href="http://www.stsc.hill.af.mil/crosstalk/1996/11/xt96d11h.asp"&gt;The original paper by Captain Tom Schors&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.embedded.com/98/9807br.htm"&gt;Seven Habits of Highly Defective Developers&lt;/a&gt; is good too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-111873837520990513?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/111873837520990513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=111873837520990513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111873837520990513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111873837520990513'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/06/capability-im-maturity-model-cimm.html' title='The Capability Im-Maturity Model (CIMM) '/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-111804793989516872</id><published>2005-06-06T14:22:00.000+05:30</published><updated>2006-10-11T12:21:19.114+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><title type='text'>Barings selling off their Mphasis Stake - news</title><content type='html'>Hmmm...TCS, Wipro, EDS, CapGemini look interested...&lt;br /&gt;&lt;a href="http://news.yahoo.com/news?tmpl=story&amp;amp;u=/nm/20050510/tc_nm/tech_india_mphasis_dc"&gt;Big firms in race for India MphasiS stake -Barings - Yahoo! News&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-111804793989516872?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/111804793989516872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=111804793989516872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111804793989516872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111804793989516872'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/06/barings-selling-off-their-mphasis.html' title='Barings selling off their Mphasis Stake - news'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-111779646503634330</id><published>2005-06-03T16:31:00.000+05:30</published><updated>2006-10-11T12:21:19.052+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><title type='text'>Christopher Alexander: An Introduction for Object-Oriented Designers</title><content type='html'>&lt;a href="http://www.answers.com/main/ntquery?s=chris+alexander&amp;gwp=11&amp;ver=1.0.3.109&amp;method=2"&gt;Chris Alexander&lt;/a&gt; - the Architect who came up with the concept of building patterns that influenced the Gang of Four. Good article :&lt;br /&gt;&lt;a href="http://g.oswego.edu/dl/ca/ca/ca.html#node1"&gt;Christopher Alexander: An Introduction for Object-Oriented Designers&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-111779646503634330?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/111779646503634330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=111779646503634330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111779646503634330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111779646503634330'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/06/christopher-alexander-introduction-for.html' title='Christopher Alexander: An Introduction for Object-Oriented Designers'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-111777336096467641</id><published>2005-06-03T10:06:00.000+05:30</published><updated>2006-10-11T12:21:18.987+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>Non-Software Examples of Software Design Patterns </title><content type='html'>Finally found an online version of this Michael Duell's work.&lt;br /&gt;All thanks to Marcelo - an Orkut bud.&lt;br /&gt;&lt;a href="http://www2.ing.puc.cl/~jnavon/IIC2142/patexamples.htm"&gt;Patterns: Non-Software Examples of Software Design Patterns - AGCS&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-111777336096467641?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/111777336096467641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=111777336096467641' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111777336096467641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111777336096467641'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/06/non-software-examples-of-software.html' title='Non-Software Examples of Software Design Patterns '/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-111751041504087061</id><published>2005-05-31T09:03:00.000+05:30</published><updated>2007-07-31T18:50:33.009+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><title type='text'>GoF design patterns quiz</title><content type='html'>&lt;a href="http://home.earthlink.net/~huston2/dp/patterns_quiz.html"&gt;GoF design patterns quiz&lt;/a&gt;&lt;br /&gt;Very interesting!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-111751041504087061?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/111751041504087061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=111751041504087061' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111751041504087061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111751041504087061'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/05/gof-design-patterns-quiz.html' title='GoF design patterns quiz'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-111613743408636201</id><published>2005-05-15T11:39:00.000+05:30</published><updated>2006-10-11T12:21:18.757+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><title type='text'>My Desktop</title><content type='html'>&lt;a href="http://photos1.blogger.com/img/161/5319/640/My%20Desktop.jpg"&gt;&lt;img style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; MARGIN: 2px; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid" src="http://photos1.blogger.com/img/161/5319/320/My%20Desktop.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;My Desktop&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-111613743408636201?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/111613743408636201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=111613743408636201' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111613743408636201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111613743408636201'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/05/my-desktop.html' title='My Desktop'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-111526985585603815</id><published>2005-05-05T10:21:00.000+05:30</published><updated>2006-10-11T12:21:18.701+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><title type='text'>Nokia N91</title><content type='html'>Nokia's coming up with its new model : &lt;a href="http://www.newlc.com/article.php3?id_article=833"&gt;N91&lt;/a&gt;. As the article says, it has 4 GB of space, mega music support and is based on Symbian 9.1. Plus the usual stuff - 2 MegaP camera, advanced Java support, Bluetooth, the works. Hopefully, it can send and receive calls as well.&lt;br /&gt;Er, wait a min - Is Symbian 9.1 even fairly stable??? Well...&lt;br /&gt;What are they trying to do? Compete with iPod? Might as well forget about it. Why can't let a mobile phone be a mobile phone? Very soon, we will have electric razor, mixer-grinder, coffee-maker all rolled in one Nokia model. Does convergence necessarily mean overwhelming the user by putting all conceivable gadgets in a single unit?&lt;br /&gt;It is a frigging mobile - invented to keep one "connected" when he/she is away from office/home. It is your excuse to loaf around and still be in the loop. I know as a techie (working on Symbian, to boot) I should be kicked about the advancements on the mobile technology front but the more rational part of me thinks that it is all a farce and we are re-inventing the wheel. The answer to portable music player was Sony's Walkman, invented ages ago. Why would one need a player on their mobile? Buy an iPod - it will be cheaper and gives a richer experience.&lt;br /&gt;IMHO, mobile technology should address the telephony needs and make life easier for the user. Or am I being too "old-fashioned" ? :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-111526985585603815?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/111526985585603815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=111526985585603815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111526985585603815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111526985585603815'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/05/nokia-n91.html' title='Nokia N91'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-111520732691610809</id><published>2005-05-04T17:18:00.001+05:30</published><updated>2006-10-11T12:21:18.647+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><title type='text'>The Code Project - Symbian OS design faults - Mobile / Embedded</title><content type='html'>Article on how and where Symbian fails to impress. Not my views - but some points are appropriate.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/useritems/Symbian_OS_design_faults.asp?print=true"&gt;The Code Project - Symbian OS design faults - Mobile / Embedded&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-111520732691610809?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/111520732691610809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=111520732691610809' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111520732691610809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111520732691610809'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/05/code-project-symbian-os-design-faults_04.html' title='The Code Project - Symbian OS design faults - Mobile / Embedded'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-111478517140757514</id><published>2005-04-29T19:30:00.000+05:30</published><updated>2006-10-11T12:21:18.478+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links/News'/><title type='text'>InstaColl</title><content type='html'>The flamboyant Sabeer Bhatia's &lt;a href="http://www.thehindubusinessline.com/2005/04/14/stories/2005041400820500.htm"&gt;back&lt;/a&gt;. This time mentoring about 2-3 companies - all doing hi-tech work in niche areas. The one making max news is &lt;a href="http://www.instacoll.com/"&gt;InstaColl&lt;/a&gt;. Sounds very interesting. And for a change, an Indian startup has come up with something which looks very neat and professional.&lt;br /&gt;Insta Coll stands for Instant Collabration and is design make document sharing easier and faster. It integrates well with Microsoft Office tools (Word, Power Point and Excel - all TMs acknowledged) and gets added as plug-in to the Office Suite. Their &lt;a href="http://www.instacoll.com/products_technology.htm"&gt;technology section &lt;/a&gt;on the site doesn't illuminate much but they keep repeating that InstaColl is based on a data-centric models and is way efficient than the screen-sharing counterparts which hog bandwidth and are show and sluggish. The best part of it all: IT IS FREE!!!&lt;br /&gt;The problem now is: should we herald this as the next big thing after e-mail, blogs, RSS, Camera phones. I mean it looks splendid and I am sure many will find this extremely useful. Yesterday I had this discussion with Rat on where shall one draw the line between convenience and necessity. Any way, it looks very promising. I am sure if it finds takers - it will become another indispensible tool in our software arsenal.&lt;br /&gt;Mr. Bhatia - wish you all the best. And thanks for putting innovation forward in this services-oriented Indian software industry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-111478517140757514?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/111478517140757514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=111478517140757514' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111478517140757514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/111478517140757514'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2005/04/instacoll.html' title='InstaColl'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-110204836973902388</id><published>2004-12-03T09:51:00.000+05:30</published><updated>2007-03-09T13:43:47.296+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rants/Senti'/><title type='text'>The great Indian Job hunt</title><content type='html'>&lt;span style="font-family:arial;"&gt;I finished my engineering in 2000. After that I stuck on to the first job I got for 4 long years.&lt;br /&gt;Yep. This was my first time, to employ a cliche. It all picked up momentum when I decided to take the plunge. It was a lazy Sunday afternoon. Late breakfast. Weekly laundry. That's when I spotted the crowd. Curiosity &amp;amp; apprehension battled within. Curiosity won. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Within a hour I joined the crowd with fresh copies of that self-glorifying document explaining what I am worth to the guys on the other side of the table. I handed over a copy to the starched-shirt HR guy. He consulted his colleague and both of them quickly slotted me. I didn't have to even speak. The damn document did the job.&lt;br /&gt;&lt;br /&gt;Next I was on my usual trip of looking around at people and their reactions. I was too slotting people, mentally. Without their knowledge or personal input. Only my slots were not limited to 2 word titles.&lt;br /&gt;&lt;br /&gt;There was Mr."If-I-don't-get-this-job-no-one-else-can".&lt;br /&gt;&lt;br /&gt;And here was Mr."I-am-so-good-at-talking-I-will-charm-the-pants-off-them."&lt;br /&gt;&lt;br /&gt;Next to the stairs, Ms."Hope-they-offer-me-50%-more-than-what-I-am-getting-now".&lt;br /&gt;&lt;br /&gt;And of course, Mr."Technology" who came because he liked a 4-letter technical acronym they mentioned in their ad.&lt;br /&gt;&lt;br /&gt;As I said, it was my first time. But their was a difference between me and the other rookies around. I wasn't particularly keen on this job and hence was not much bothered. So even as people around me were biting nails and sending SMSes to whomever, I was chilling out next to the nearest telephone pole and enjoying a cold coffee and a cigarette, quietly rating people on my psychoanalytic scale.&lt;br /&gt;&lt;br /&gt;They came calling. I must admit I was surprised - I was around for less than a hour. Also, I am a sucker for occasions which involve my name being called out in public (the definition of public is, of course, limited in this context to the bunch of young software professionals romping around with their resin folders and eager faces).&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;After that I felt my careless attitude towards the interview slipping away to give rise to some solid fear of the unknown. &lt;/span&gt;&lt;span style="font-family:Arial;"&gt;A quick psychoanalysis on myself. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Results: this nonchalance was basically generated by my sub-consciousness to counter the fear of rejection. If they hadn't called me, I would have walked off home, brushing off the whole thing and reassuring myself that I was not bothered anyway. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Now that I was called, things were different. Face it, dude. I hate to lose. I am not a cheerful loser (if you say you are not...you need to get psycho-analysed...by me).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Now this looked like some small company going big because of some sudden interest shown by a VC or because of a couple of prize-catch projects from the big clients. The last minute hired HR personnel had problems remembering the name of the company. The interview venue rented for the week from whomever. Makeshift arrangement of tables and chair served as the reception.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Inside. Musty, cramped environment that plagues all cubicle farms.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Low false ceiling, linoleum floors suck-out all the cheer one may have managed to salvage. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Unobstrusive overhead lighting. Guaranteed to make you paler. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Things buzzing, ringing, loading, reeling, printing...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;"Look busy" - the universal office motto seems to apply to the office fixtures are well.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Interview Room - a tiny conference room with room of 4 or 5 people.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;2 people enter. Making themselves look important. Say they want to interview me for the post of a project leader (I told you, I was slotted). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Polite Introductions.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;(Mental note: I had never been half as polite when I have been on the other side of the table. Learn this art!)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Grilling starts...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Background.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Current projects.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Team sizes.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Tools used.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Microsoft. Dot Net. Localization. Signed assemblies. Mr. Gates' favourite breakfast cereal.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Within 15 minutes, I found myself reeling from the onslaught. Most questions drew blanks.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;My self-image as a technical whiz-kid was fractured.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;They were nice and polite about it but I didn't lose this chance of serving myself a generous serving of the proverbial humble pie.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;I would feel my face flushing. Or was that my false pride, injured and bleeding, trickling down my conscience?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;I was an overrated, but much sought-after guy where I used to work. Not that all that jazz was completely baseless. But it was classic case of a fish growing too large for the pond coupled with the "Koop Manduka" syndrome which had made me unprepared for such a utter defeat on this front.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;This was a rude awakening and fortunately it happened to me at a very early phase of job-hunting.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;I sneaked past the HR and never came back. Or rather didn't have to come back and check the result of the interview. Even if they had selected me I wouldn't have joined a company which goes so easy on the selection. A-la Groucho Marx and the honorary club membership he had received.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;That whole night I spend searching for answers to the questions which stumped me. Damage control for my ego. Another day in technical paradise.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;There were many more interviews after that. There were at least a dozen worth mentioning, 5 of these materialised into something more concrete. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;There was a lot I learnt about the ways of the world. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;HR acting up - making the most of this phase where they can make you plead before them.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Long distance telephonic interview with people around the globe.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Impressing the technical manager so that they are keen on hiring you.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Haggling for a bigger paypacket.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Pumping up your value by whatever means.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Selling yourself for a few dollars more...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Been there, done that - I can finally say. Not sure if I enjoyed myself though.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Finally opted for the lowest offer. Thought the job was most challenging of them all. Still figuring if that was smart decision.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;There are too things which can go wrong. Wonder how did I manage to survive so far...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-110204836973902388?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/110204836973902388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=110204836973902388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/110204836973902388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/110204836973902388'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2004/12/great-indian-job-hunt.html' title='The great Indian Job hunt'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-109569346419443203</id><published>2004-09-20T20:14:00.000+05:30</published><updated>2006-10-11T12:21:18.359+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>COM Interop - Smart Choice?</title><content type='html'>I am writing this just prior to jumping into the nasty world of .Net - COM Interop. Let's see, when there were rumors of Microsoft launching .Net, there was wide spread confusion and fear that COM will be throttled and killed. What about the millions invested in COM components. Mr. Gates (through one of his techies) announced that COM components will survive - they can be used from .Net. After a round of collective hurrah!s things returned to normalcy. COM Interop was born.&lt;br /&gt;Then somewhere in the labyrinths of 1, Microsoft Way, Redmond, a group of well-meaning guys would have thought it would be great if they can make .Net components work with COM (or non-.Net, to be precise) Clients! This was the 2nd face of the COM interface coin. In other words, with this move, MS asked all the non-.Net platform developers to rest assured - they are not pulling the carpet yet.&lt;br /&gt;The question is : Is .Net-COM Interop necessary? Ppl must have had thousands of arguments for and against it. IMHO, using COM components from a .Net system outweighs the advantages of using .Net component in a COM environment. I would rather write a .Net client to house the .Net Component and create this client EXE as a separate (child) process from my COM client, instead of using Interop and using the .Net Component from COM client directly. Of course, in some cases this might not be the best way and may not look very professional (2 windows appearing in the taskbar can freak most users), but when you are hard pressed for time, this option should be considered. To strengthen this point, let us consider the facts in hand :-&lt;br /&gt;&lt;ol&gt;&lt;li&gt;COM is an integral part of almost all supported Windows OS flavors.&lt;/li&gt;&lt;li&gt;The basic principles of versioning in COM and .Net are drastically different.&lt;/li&gt;&lt;li&gt;.Net is has rich features in terms of data types, security, event handling via delegates, etc. - COM lacks many of these features.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Now, let me illustrate the points.&lt;/p&gt;&lt;p&gt;1) COM components, for most part, are designed to run outta the box. Register the component and you have the power! Whereas .Net components will need the .Net Framework installed. I am not saying that installing the .Net framework is a big task. But when we have gone to the extent of installing it why pretend that your app is a pure COM app - using only COM components? So think twice, thrice, before you decide to add a COM port to your .Net component.&lt;/p&gt;&lt;p&gt;2) Remember that .Net supports "side-by-side execution". The developer can break component interfaces without being cursed for life by Versioning purists. In COM, breaking an interface is taboo. However, when a .Net component is created, a GUID is automatically associated with the assembly - which sticks unless you manually change it. Now say our .Net developer creates this component which exposes a certain interface. Our project Manager, who prefers COM for his own set of good reasons, opts to port it to COM and use it from his Killer App. After a couple of weeks, the .Net developer jumps out from his bath and redesigns his entire component(s) in an inspired moment of technical nirvana. He rolls out the new, improved version of the component(s), with new interfaces and everything. It is bigger, better, faster - Champagne flows through the .Net team's corridors. Our unsuspecting VB developer adopts the new version and poof! the Killer app blows to bits. Cut to post-martem analysis - who's responsible? Ans :- No one. It is just the .Net and COM worlds colliding, Maximum Impact. The VB developer is at the verge of committing suicide. First, she is forced to create and use the COM wrapper; she gets to Intellisense help while developing and now the .Net bugger has changed the whole interface! Moral of the story : I feel that if the .Net component is developed within the company, then please let the .Net team know that you will need a COM port. If you plan to use a third party .Net component - beware! A possible solution may be build a COM wrapper component around the Interop generated CCW and use this wrapper from your COM components - but this will mean more work AND it promises only so much.&lt;/p&gt;&lt;p&gt;3) .Net has great stuff to offer. Delegates, Database stuff, arrays collections - you name it. With a COM port, most of these will be lost. Do you really want to implement a function returning a list of values using ATL and SAFEARRAYS or would you prefer a simple function using VB.Net and a Collection object (or a Datatable or an ArrayList...)? I, being a simple developer, would prefer the latter. But hey what about the COM version of the component? You will have to get your hands dirty with the Custom Marshalling goo, probably. A COM Cognizant .Net component would probably implement the component in a non-intuitive way to avoid returning arrays or collections. Well, why write the component in .Net then? Write a COM component - your .Net clients can use it easily.&lt;/p&gt;&lt;p&gt;So in the end, I personally feel that COM-to-.Net port is much easier and makes more sense than the .Net-to-COM port. Of course, there are enough reasons why the latter is even around. But I would rather stay away.&lt;/p&gt;&lt;p&gt;Happy programming&lt;/p&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-109569346419443203?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/109569346419443203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=109569346419443203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/109569346419443203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/109569346419443203'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2004/09/com-interop-smart-choice.html' title='COM Interop - Smart Choice?'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-108541054971603531</id><published>2004-05-24T20:18:00.000+05:30</published><updated>2006-10-11T12:21:17.949+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>.Net Compact Framework</title><content type='html'>Boy! It sure looks good. If you have ever worked any of the dodgy Embedded Visual Studio tools - you will swear by Visual Studio.Net's CF support. &lt;br /&gt;But CF too is plagued by the same problem faced by eVS - that of limited documentation. There are plently of books written for .Net CF but most of them are either not available in India or concentrate on PocketPC or SmartPhone variants. I am working on Psion's Netpad which has dumped it home-made Symbian for WinCE.Net. Smart choice, some say, some are cursing Psion to no end for giving up its stake in Symbian. Whatever.&lt;br /&gt;We are looking at things like remote connectivity and data access over GPRS etc for the project. The problem is :- there is still lot to do. Though things are much easier with VS.Net, I still have to explore the grey areas in WinCE.Net programming. There are lot of these forums where ppl ask and answer questions. My problem is I don't know enough about .Net CF to ask. LOL!&lt;br /&gt;Still glad to move over to .Net - much more productive, faster to develop and faster to deploy. Good going, .Net fellows.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-108541054971603531?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/108541054971603531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=108541054971603531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108541054971603531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108541054971603531'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2004/05/net-compact-framework.html' title='.Net Compact Framework'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-108506958146373345</id><published>2004-05-20T21:29:00.001+05:30</published><updated>2006-10-11T12:21:17.893+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security/Cryptography'/><title type='text'>Phew! ResetPIN done!</title><content type='html'>Finally managed to write and test the ResetPIN functionality on my CLUBCARD system. It was on hold for more than a year now. &lt;br /&gt;I have overcome this inertia which keeps me from starting something from scratch. That #$*&amp;&amp; COM component which I wrote to handle the Smart Card based transactions just refused to register on many machines about an year back. At that point of time it was doing 90% of the job. I tried hard but couldn't get a hack for the problem I was facing (which was basically an assert in the some MFC source file which was trying some TypelibOlb stuff during registration. So I gave up!&lt;br /&gt;Then when I caught Bijo, my colleague yesterday and asked him to redo the whole COM component using pure PC/SC API, he came up with a quicker solution - link MFC statically and that assertion will not come!&lt;br /&gt;The COM component is still far from complete. I still have to distribute it in the debug mode as release just doesn't work (thanks to the buggy Zeit Control API). But it works! &lt;br /&gt;This incident made me think. I would have come up with some hack like this a couple of years a ago. Have I stopped being my good old resourceful self?&lt;br /&gt;Sad but true.&lt;br /&gt;&lt;br /&gt;Another good news was that I finally managed to sit and write a class which will encapsulate the BbyB software versioning scheme. So it can parse a version string and what's more - it gives you a static function using which you can compare 2 versions!&lt;br /&gt;Quite a productive day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-108506958146373345?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/108506958146373345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=108506958146373345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108506958146373345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108506958146373345'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2004/05/phew-resetpin-done.html' title='Phew! ResetPIN done!'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-108688681739280066</id><published>2004-05-20T08:59:00.005+05:30</published><updated>2006-10-11T12:21:18.300+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security/Cryptography'/><title type='text'>ASP.Net Security Hack</title><content type='html'>Today our IIS had to be shut down and restarted and after that I realised that one of our ASP.Net projects which was being tested is not showing up at all!&lt;br /&gt;This is the error message I got :-&lt;br /&gt;&lt;br /&gt;Server Error in '/PFACT' Application.&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Access to the path "C:\WINNT\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\pfact\0e656327\9c5e1867" is denied. &lt;br /&gt;Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. &lt;br /&gt;&lt;br /&gt;Exception Details: System.UnauthorizedAccessException: Access to the path "C:\WINNT\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\pfact\0e656327\9c5e1867" is denied. &lt;br /&gt;&lt;br /&gt;ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via &lt;identity impersonate="true"/&gt;, the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user. &lt;br /&gt;&lt;br /&gt;To grant ASP.NET write access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.&lt;br /&gt;&lt;br /&gt;Source Error: &lt;br /&gt;&lt;br /&gt;An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  &lt;br /&gt;&lt;br /&gt;Stack Trace: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[UnauthorizedAccessException: Access to the path "C:\WINNT\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\pfact\0e656327\9c5e1867" is denied.]&lt;br /&gt;   System.IO.__Error.WinIOError(Int32 errorCode, String str) +393&lt;br /&gt;   System.IO.Directory.InternalCreateDirectory(String fullPath, String path) +632&lt;br /&gt;   System.IO.Directory.CreateDirectory(String path) +195&lt;br /&gt;   System.Web.Compilation.PreservedAssemblyEntry.DoFirstTimeInit(HttpContext context) +85&lt;br /&gt;   System.Web.Compilation.PreservedAssemblyEntry.EnsureFirstTimeInit(HttpContext context) +97&lt;br /&gt;   System.Web.Compilation.PreservedAssemblyEntry.GetPreservedAssemblyEntry(HttpContext context, String virtualPath, Boolean fApplicationFile) +29&lt;br /&gt;   System.Web.UI.TemplateParser.GetParserCacheItemFromPreservedCompilation() +91&lt;br /&gt;   System.Web.UI.TemplateParser.GetParserCacheItemInternal(Boolean fCreateIfNotFound) +148&lt;br /&gt;   System.Web.UI.TemplateParser.GetParserCacheItemWithNewConfigPath() +125&lt;br /&gt;   System.Web.UI.TemplateParser.GetParserCacheItem() +88&lt;br /&gt;   System.Web.UI.ApplicationFileParser.GetCompiledApplicationType(String inputFile, HttpContext context, ApplicationFileParser&amp; parser) +171&lt;br /&gt;   System.Web.HttpApplicationFactory.CompileApplication(HttpContext context) +43&lt;br /&gt;   System.Web.HttpApplicationFactory.Init(HttpContext context) +485&lt;br /&gt;   System.Web.HttpApplicationFactory.GetApplicationInstance(HttpContext context) +170&lt;br /&gt;   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +414&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;Version Information: Microsoft .NET Framework Version:1.1.4322.573; ASP.NET Version:1.1.4322.573 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Found a quick hack at http://www.dotnet247.com/247reference/a.aspx?u=http://authors.aspalliance.com/kenc/faq2.aspx and it worked. Thanks "Ken".&lt;br /&gt;But my hunger for knowledge is far from satisfied. &lt;br /&gt;This brings me back to the much debated topic - Should the Project leaders be well versed in all the technologies they are working on? In my case, I have never even written HTML Code in my whole life but am managing 2 ASP.Net projects. Now the deal was that I won't have to code. I didn't. But the sad part is now I am left at the mercy of the developer under me who dictates what can be done in ASP.Net and what cannot be done. Of course, I am not as dumb as I look and can see through obvious issues, and more advanced things are just a google search away. But incidents like these increase the rift between the leader and the developers. I would rather know what I am talking abt than later finding out that the developers are trying to fool me and blow my top. Also, sometimes, the developers are still green. They do not have the exposure to developement their leaders would have had. So it is not entirely their fault if they think that something cannot be achieved. The Project Leader also has the responsibility to figure out difficult/new technical things. &lt;br /&gt;My opinion : Project leads should be technically competant. At least in the software industry when the technology is changing by the hour.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-108688681739280066?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/108688681739280066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=108688681739280066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108688681739280066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108688681739280066'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2004/05/aspnet-security-hack.html' title='ASP.Net Security Hack'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-108679344018189234</id><published>2004-05-20T08:59:00.004+05:30</published><updated>2007-07-31T18:48:45.482+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rants/Senti'/><title type='text'>How does one TEACH OOAD???</title><content type='html'>&lt;span style="font-family:arial;"&gt;OK. I will not mince words...have you ever tried teaching a hard-core VB developer any OOAD fundamentals? No, I suggest that you don't try it. Not that I have anything against VB programmers - I am one myself :), plus there are thousands of wonderful VB authors who have authored excellent books and technical papers based on OOAD. This is not JUST abt VB developers, it is abt ppl who start off with non-OO languages and then jump (or are rather pushed) into OO languages.&lt;br /&gt;&lt;br /&gt;Me : What is a Class?&lt;br /&gt;&lt;br /&gt;X : It is used to store data.&lt;br /&gt;&lt;br /&gt;Me : D-uh! Why not use a lowly structure?&lt;br /&gt;&lt;br /&gt;X : (Grins)Yes why not.&lt;br /&gt;&lt;br /&gt;Me : How should you model classes?&lt;br /&gt;&lt;br /&gt;X : (looking at me suspiciously) Model???? I don't know UML.&lt;br /&gt;&lt;br /&gt;Me : When should you use inheritance?&lt;br /&gt;&lt;br /&gt;X : (thinking - this guy is another OOAD crusader) WHY should you use Inheritance?&lt;br /&gt;&lt;br /&gt;Me : (hot, angry tears flowing down my eyes, nose tickling) Have you learnt C++ in your college?&lt;br /&gt;&lt;br /&gt;X : No just Java.&lt;br /&gt;&lt;br /&gt;Me : (hopeful) Ah good so you have some OOAD exposure - you shouldn't have too many problems working C++.&lt;br /&gt;&lt;br /&gt;X : (Pure horror on face) Oh no! Can't do that!&lt;br /&gt;&lt;br /&gt;Me : (Shocked) Why?&lt;br /&gt;&lt;br /&gt;X : (matter-of-fact-ly) Because C++ has pointers - I know nothing abt them.&lt;br /&gt;&lt;br /&gt;Me : (heading for the nearest wall to bang my head)&lt;br /&gt;AAAAAAAAAAARRRRRRRRRRGGGGGGGGGGHHH!&lt;br /&gt;&lt;br /&gt;This is how most of OOAD sermons come to an end. Not that X is a moron - he/she is invariably a very smart person who is doing quite well in some other stream.&lt;br /&gt;What surprises me is this :- People can grasp far out things like assembly level programming, TCP/IP, networking protocols, what not. I find modelling using classes easy - intuitive even. You have to use domain keywords not programming jargon - then what is the problem. At the same time, you give me a ISO spec and ask me to churn out a device driver for some super complicated USB device - I will go D-uh! You ask me to do an accounting package, which is a glorified version of the classic "Add 2 no.s program" and I will probably lose a week's sleep.&lt;br /&gt;The point here is : I am an average developer and as an average developer I find OOAD easy, why can't better programmers get it!!!&lt;br /&gt;What typically happens is organisations pick up the lastest OOAD powered technology (.Net, J2EE, whatever) and push programmers into it. Max they do is given then a training course which tells them how to declare a class object in VB.Net and that VB.Net supports Multi-threading. The developers say "aaahh", go back to their cubicles and churn out stupid classes which doesn't augur well with the mantra of developing a system which is easy to code, maintain and change.&lt;br /&gt;But to be fair, I guess that it easier said than done. Thinking in OOAD has always been the holy grail for serious developers. Everyone knows it can be done, no one knows how; worse, most don't understand WHY!&lt;br /&gt;Now I am heading all the .Net projects in our VB-SQL Server based company. One of the projects is being done in ASP.Net and is fairly complete too - but is an absolute mess. The developer has picked up all the nitty gritty of ASP.Net and how different is the Session component different in ASP.Net and stuff like that. But the code is pathetic. Even though he had VB.Net as a programming language, he never got over his VBScript hangover. All the time, he will wondering - why the hell are we doing in .Net.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-108679344018189234?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/108679344018189234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=108679344018189234' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108679344018189234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108679344018189234'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2004/05/how-does-one-teach-ooad.html' title='How does one TEACH OOAD???'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-108679124114441431</id><published>2004-05-20T08:59:00.003+05:30</published><updated>2006-10-11T12:21:18.184+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rants/Senti'/><title type='text'>Testing team finally gets a say in the firm</title><content type='html'>Testers have always been pariahs in medium sized companies like ours. As my boss puts it - "We need them but don't love them". Doesn't that hold true for almost everything we ever come across in life. Right now, those poor guys are left out from virtually everything. Worse, most of the ppl think the testers are less capable then themselves because Testing is considered low-grade, lacks the punch of developing. D-uh! Why one of the top executives in my office, who had himself started off a tester a decade ago refused to take the charge of the testing team when offered with the same because he thought was "degrading". Double D-uh! Whatever happened to the "No Work is beneath us and No job beyond" principle we had in our College Rotract club. Mebbe it is never implemented in the real world. Too bad.&lt;br /&gt;Anyway, in today's meeting, the Testing gang in our office (half a dozen and growing) was liberated from the projects. Sairamesh was elected the Testing Leader who will be responsible for all things related to testing - be introduction of new testing tools, managing the testers, everything. A good fellow for the job too. Always had high regards for him as a co-worker. &lt;br /&gt;My life has become a little better as (hopefully) the smaller projects which I handle will have a part-time tester. All the best, Sai.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-108679124114441431?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/108679124114441431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=108679124114441431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108679124114441431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108679124114441431'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2004/05/testing-team-finally-gets-say-in-firm.html' title='Testing team finally gets a say in the firm'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-108648979332356081</id><published>2004-05-20T08:59:00.002+05:30</published><updated>2006-10-11T12:21:18.127+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Crystal Reports.Net Deployment with ASP.Net Projects</title><content type='html'>Disclaimer : I am not a web developer (yet). I haven't even done as much as design a web page :(. I am a beginner in .Net - just picked it up a couple of months back. So if you find some remarks juvenile - plz don't mind. This is my experience with my juniors struggling with the web development. &lt;br /&gt;Just when all the poor ASP programmers thought their painful days with writing HTML reports were over with CR.Net becoming readily available (the bundled version ships with Visual Studio.Net), fast, WYSIWYG report generation option, some evils guys at either Crystal Decisions (or Business Objects or whatever they call themselves now) or Microsoft decided to add some excitement in the boring lives of ASP developers.&lt;br /&gt;When designing reports on CR is a cake walk, deploying can potentially be a pain, especially for ASP.Net web projects. We have a busy evening yesterday trying to figure out how to get CR runtime installed on the Client site. Here are a few DOs and DON'Ts you should keep in mind.&lt;br /&gt;For the uninitiated, CR comes are a separate package and a slightly compact edition ships with VS.Net itself. The former has a separate runtime package available at &lt;a href="http://support.businessobjects.com/communityCS/FilesAndUpdates/cr9netredist.zip.asp"&gt;&lt;/a&gt; - you can install it separately. I am covering the problems (and the solutions) I have faced us with the latter.&lt;br /&gt;First, the CR dependencies do not get picked up automatically when you create a deployment project for your app - you will have to add everything your self.&lt;br /&gt;CR has a set of Merge modules (MSM files) which you will have to include in your deployment project. These modules change with the version of Visual Studio you have and with the version of Crystal Reports you have. The list can be located at &lt;br /&gt;&lt;a href="http://support.businessobjects.com/communityCS/TechnicalPapers/crnet_deployment.pdf.asp"&gt;&lt;/a&gt;. It is a fairly comprehensive document. &lt;br /&gt;There is a special MSM which holds your product registration info - the idea being even if you using a pirated version of VS/CR, you cannot deploy it on any machine. This MSM is called RegWiz.msm(for VS.Net 2002) and Crystal_RegWiz2003.msm(for VS.Net 2004). &lt;br /&gt;To add your registration info - go to VS's Help &gt; About. Select the CR entry in the Installed Products list, click on Copy info. Now goto your deployment project, select the registration MSM, hunt for the License Key property and paste the info you copied just now. The license key is the 19-digit key and will look something like "AAP50-GS00000-U7000RN". Note that if you DON'T see this key against the CR entry in the About box then it means that ur CR is NOT registered - try to launch a CR task and click on the "Register" button which see on the nag screen. You will receive an e-mail with the Key. If you don't enter this key then the Deployment project won't compile.&lt;br /&gt;But the problem is, even if you add all the merge modules and the deployment project to compile perfectly, the install will NOT install CR.Net on the target machine! You will get to see the notorious "Keycodev2.dll not found" error message. &lt;br /&gt;We finally managed to get it working, but by unorthodox methods.&lt;br /&gt;First we created a VB.Net based Windows Forms dummy project and added some CR references. Then we created a deployment project and added the MSMs and presto! it worked!&lt;br /&gt;All this at the 11th hour. The Internet rocks - I would have been in a soup otherwise.&lt;br /&gt;I am still playing around with ASP.Net and CR.Net. &lt;br /&gt;Peter van Ooijen shares his experiences with us on his blog - &lt;a href="http://dotnetjunkies.com/WebLog/petergekko/"&gt;&lt;/a&gt;, which I found useful. Thanks Peter.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-108648979332356081?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/108648979332356081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=108648979332356081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108648979332356081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108648979332356081'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2004/05/crystal-reportsnet-deployment-with.html' title='Crystal Reports.Net Deployment with ASP.Net Projects'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-108567074216362323</id><published>2004-05-20T08:59:00.001+05:30</published><updated>2006-10-11T12:21:18.072+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>.Net CF SQL Server CE Image Blob</title><content type='html'>Guess what, there is no Image data object to which I can link a picture box. Tentenen!&lt;br /&gt;So I have get the BLOB as a Binary, convert it into an array of bytes and then save it in a stream, load a System.Drawing.Image object from the damn stream and then load the damn image into the picture box. Superb, the amount of rework we have to put in all these trivial things.&lt;br /&gt;But then again, I remember the days when showing an image on the DOS screen would have taken 300 lines of bitmapping code and I thank God for the .Net garbage collection which handles my byte array and my stream.&lt;br /&gt;Will post the code soon&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-108567074216362323?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/108567074216362323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=108567074216362323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108567074216362323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108567074216362323'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2004/05/net-cf-sql-server-ce-image-blob.html' title='.Net CF SQL Server CE Image Blob'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-108566823271958981</id><published>2004-05-20T08:59:00.000+05:30</published><updated>2006-10-11T12:21:18.008+05:30</updated><title type='text'>Schlum Payflex</title><content type='html'>Tried fiddling around with the Schlumberger Payflex S 4K card. Got this a trial version of Subsembly's .Net namespace for PC/SC. Looks fine, only I couldn't crack this damn Payflex card. &lt;br /&gt;This is where we have hit the wall : there is terrific security built onto the Payflex card. There are authentication keys and PINs for almost every goddamn file on the card. &lt;br /&gt;Fine. &lt;br /&gt;My client source a few Schlum cards - great! &lt;br /&gt;But hey! How do I personalize these cards?&lt;br /&gt;Uh-huh! You need the card Administrative Key.&lt;br /&gt;Sounds good, so where can I get them?&lt;br /&gt;Oops! We are not telling...&lt;br /&gt;WHAT THE FCUK!&lt;br /&gt;&lt;br /&gt;The 140-odd page document is a drag to read. Anyway, the stuff is explained clearly. There are ePurse files and verification key files and dedicated files and the all-important master file. There is SAM authentication - jolly good. But crap, these schlum are too secretive. Every damn printed word which has come from the Schlumberger corp (now Axalto) has "Confidental" or "Top Secret" written on it. They are too damn paranoid - I don't what are they scared of? Developers using their smart cards and readers? I don't know how are they able to market themselves. Surely poor developers like me never get to see what they are selling till they impress the management and sell their stuff. That is when the developers misery starts.&lt;br /&gt;Anyway, we are going to meet the Schlum guys in Mumbai pretty soon. They are now looking at expanding their base in India with lot of local service partners and service centres in the pipeline. Apparently, their attitude has also changed in the last few months - now they seem to be more receptive to customers. Other players like Verifone still look unapproachable.&lt;br /&gt;Smart Cards have great technological potential. The best part is : this is end user technology, it is not the next thing in Main Frame computing which is never coming out of the research labs. The person on street can use it for very practical purposes. But somehow, it has not picked up the way it should have. US, which is the dream market for all the hot technologies has not taken it very serious. However, Europe and Korea has implemented SC based solutions for toll-ways, transit cards, and similar pragmatic applications. India's very own Petro Card was quite a hit, though I personally consider that is a bit flaky. I guess, a few early mis-guided SC projects spoilt the image. Costs are still fairly high but I guess will come down as the usage volumes go up - remember the Microprosser chips story? 0x86 to Pentium 4 in 15 years and at 1/4 the cost?&lt;br /&gt;Bottomline : &lt;br /&gt;1) Schlum has a done wonderful job with the Payflex card. Now if they will be kind enough and give enough resources to developers so that they can tap the technology, it will be great. They should take some clues from Zeit Control and their flagship BasicCard - superb documentation and support. &lt;br /&gt;2) SC application development is a superb experience. Hope that it picks up as the next big pilot for financial transactions instead of these stupid Mini-Credit cards (yuccck!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-108566823271958981?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/108566823271958981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=108566823271958981' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108566823271958981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108566823271958981'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2004/05/schlum-payflex.html' title='Schlum Payflex'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7050424.post-108506899694887001</id><published>2004-05-19T21:29:00.000+05:30</published><updated>2007-08-28T13:55:47.015+05:30</updated><title type='text'>Hello World!</title><content type='html'>This is my first posting. I dedicate this blog to all my job-related stuff. I will try and post all the little victories and defeats I face everyday in my professional life as a Software professional.&lt;br /&gt;I basically am a C++ hound and work extensively on Microsoft technologies. VC++, VB, VB.Net, eVB, eVC++ - done all that.&lt;br /&gt;I guess it will quite some time before this blog becomes a great place find interesting stuff, but I guess that shouldn't deter me from starting off today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7050424-108506899694887001?l=all_work_no_play.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all_work_no_play.blogspot.com/feeds/108506899694887001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7050424&amp;postID=108506899694887001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108506899694887001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7050424/posts/default/108506899694887001'/><link rel='alternate' type='text/html' href='http://all_work_no_play.blogspot.com/2004/05/hello-world.html' title='Hello World!'/><author><name>Guru Kini</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/161/5319/320/Me.jpg'/></author><thr:total>0</thr:total></entry></feed>
